2015-10-28 4 views
6

क्या किसी भी तरह से डिफ़ॉल्ट पाठ मान के साथ तत्व बनाना संभव है? तो मुझे ऐसा करने की ज़रूरत नहीं होगी?पाठ मूल्य के साथ पायथन एलएक्सएमएल सबबलेमेंट?

from lxml import etree 

root = etree.Element('root') 
a = etree.SubElement(root, 'a') 
a.text = 'some text' # Avoid this extra step? 

मेरा मतलब है कि आप सबलेमेंट में विशेषताओं को निर्दिष्ट कर सकते हैं, लेकिन मुझे इसमें टेक्स्ट निर्दिष्ट करने का कोई तरीका नहीं दिख रहा है।

उत्तर

3

मुझे नहीं लगता कि ऐसा करने का एक अंतर्निहित तरीका है, लेकिन यदि आप स्वयं को कई बार ऐसा करते हैं, तो यह एक ऐसा कार्य लिखना बेहतर हो सकता है जो उप तत्व बनाने और पाठ को सेट करने में सक्षम हो। उदाहरण -

def create_SubElement(_parent,_tag,attrib={},_text=None,nsmap=None,**_extra): 
    result = etree.SubElement(_parent,_tag,attrib,nsmap,**_extra) 
    result.text = _text 
    return result 

और फिर अपने तत्व बनाने के रूप में -

a = create_SubElement(root,'a',_text="Some text") 

कृपया ध्यान दें, इस के साथ आप के साथ नाम _text कीवर्ड तर्कों का उपयोग, आप attrib कीवर्ड का उपयोग करने की आवश्यकता होगी विशेषता बनाने के लिए सक्षम नहीं होगा इसके लिए तर्क।

+0

एचएम, मैंने सोचा कि यह एक समाधान था, लेकिन इसे आजमा रहा है मुझे यह त्रुटि मिलती है: 'वैश्विक नाम' टेक्स्ट 'परिभाषित नहीं किया गया है' – Andrius

+0

ओह, मुझे लगता है कि यह आपके कोड में एक टाइपो था। यह bee 'result.text = _text' – Andrius

+0

कुछ तर्कों के लिए उन अग्रणी अंडरस्कोर के साथ क्या है और आप 'attrib' और' nsmap' तर्कों को अनदेखा क्यों कर रहे हैं? – BlackJack

1

निम्नलिखित के बारे में कैसे?

etree.SubElement(root, "a").text = "some text" 

केवल तभी कार्य करता है जब आपको परिणामी तत्व को चर के लिए असाइन करने की आवश्यकता न हो।

+0

वास्तव में, मुझे चर को असाइन करने की आवश्यकता है, क्योंकि इसे किसी अन्य तत्व के लिए अभिभावक के रूप में उपयोग किया जाता है – Andrius

संबंधित मुद्दे