lxml के भीतर एक संपूर्ण तत्व को ले जाएं, क्या यह संभव है, तत्व को दिया गया है, एक्सएमएल दस्तावेज़ में पूरी चीज को अपने सभी बच्चों को पढ़ने के बिना और इसे फिर से बनाने के लिए? मेरा सबसे अच्छा उदाहरण माता-पिता को बदल देगा। मैं दस्तावेज़ों के चारों ओर थोड़ा सा rummaged है लेकिन बहुत भाग्य नहीं है। अग्रिम में धन्यवाद!lxml.etree
7
A
उत्तर
14
.append
, .insert
और अन्य कार्यों है कि डिफ़ॉल्ट रूप से
>>> from lxml import etree
>>> tree = etree.XML('<a><b><c/></b><d><e><f/></e></d></a>')
>>> node_b = tree.xpath('/a/b')[0]
>>> node_d = tree.xpath('/a/d')[0]
>>> node_d.append(node_b)
>>> etree.tostring(tree) # complete 'b'-branch is now under 'd', after 'e'
'<a><d><e><f/></e><b><c/></b></d></a>'
>>> node_f = tree.xpath('/a/d/e/f')[0] # Nothing stops us from moving it again
>>> node_f.append(node_a) # Now 'a' is deep under 'f'
>>> etree.tostring(tree)
'<a><d><e><f><b><c/></b></f></e></d></a>'
करते समय सावधान रहें नोड्स चलती होने एक पूंछ पाठ। एलएक्सएमएल पूंछ पाठ में नोड से संबंधित है और इसके साथ घूमता है। (इसके अलावा, जब आप एक नोड हटा सकते हैं, इसकी पूंछ पाठ भी हटा दी जाती है)
>>> tree = etree.XML('<a><b><c/></b>TAIL<d><e><f/></e></d></a>')
>>> node_b = tree.xpath('/a/b')[0]
>>> node_d = tree.xpath('/a/d')[0]
>>> node_d.append(node_b)
>>> etree.tostring(tree)
'<a><d><e><f/></e><b><c/></b>TAIL</d></a>'
कभी कभी यह एक वांछित प्रभाव है, लेकिन कभी कभी आप ऐसा ही कुछ की आवश्यकता होगी: मैं
>>> tree = etree.XML('<a><b><c/></b>TAIL<d><e><f/></e></d></a>')
>>> node_b = tree.xpath('/a/b')[0]
>>> node_d = tree.xpath('/a/d')[0]
>>> node_a = tree.xpath('/a')[0]
>>> # Manually move text
>>> node_a.text = node_b.tail
>>> node_b.tail = None
>>> node_d.append(node_b)
>>> etree.tostring(tree)
>>> # Now TAIL text stays within its old place
'<a>TAIL<d><e><f/></e><b><c/></b></d></a>'
0
आप मौजूदा तत्व को एक subelement जोड़ने के लिए .append()
, .insert()
तरीकों का उपयोग कर सकते हैं:
>>> from lxml import etree
>>> from_ = etree.fromstring("<from/>")
>>> to = etree.fromstring("<to/>")
>>> to.append(from_)
>>> etree.tostring(to)
'<to><from/></to>'
संबंधित मुद्दे
- 1. कैसे lxml.etree
- 2. एक 'lxml.etree._ElementTree' ऑब्जेक्ट
- 3. जब आयात lxml.etree
- 4. lxml.etree, element.text पूरे पाठ को तत्व
- 5. विशाल XML फ़ाइलों के लिए python lxml.etree का उपयोग
- 6. अविश्वसनीय रूप से बुनियादी एलएक्सएमएल प्रश्न: lxml.etree._Element की HTML/स्ट्रिंग सामग्री प्राप्त करना?
- 7. एट्री एक्सएमएल ऑब्जेक्ट को कैसे सेव करें? lxml etree वस्तुओं लोड करने में समस्या बचत
- 8. टेक्स्ट नोड से मिलान कैसे करें, फिर XPath
- 9. मैं xx नेमस्पेस का उपयोग lxml में ढूंढ/ढूंढने के साथ कैसे करूं?
- 10. पाइथन
- 11. टैग के साथ: lxml
- 12. lxml.html
- 13. अजगर डाउनलोड छवि
- 14. एक्सएमएल संरक्षित स्वरूपण और टिप्पणियों को संपादित करने के लिए पायथन लाइब्रेरी
- 15. lxml.etree.iterparse() मेरी सारी मेमोरी क्यों खा रहा है?
- 16. lxml - कठिनाई पार्स करने stackexchange आरएसएस
- 17. डिकोड base64 स्ट्रिंग अजगर 3 में (lxml साथ हो या नहीं)
- 18. त्रुटि जब अजगर lxml
- 19. lxml
- 20. पायथन के साथ बड़ी एक्सएमएल फ़ाइल को पार्सिंग - etree.parse त्रुटि
- 21. अजगर 2.7 Google अनुप्रयोग इंजन पर, उपयोग नहीं कर सकते
- 22. पाइथन वेब स्क्रैपिंग विशेषता वाले एचटीएमएल टैग को शामिल करता है
- 23. lxml.etree.tostring (तत्व) को पायथन में नामस्थान लिखने के लिए कैसे बताना है?
- 24. विंडोज
- 25. मैं html5lib के साथ HTML को कैसे पार्स कर सकता हूं, और XPath के साथ पार्स किए गए HTML से पूछताछ कर सकता हूं?
- 26. एलएक्सएमएल
- 27. लिनक्स पर प्रशासनिक अधिकारों के बिना पाइथन के लिए lxml कैसे स्थापित करें?
- 28. Google ऐप इंजन पायथन 2.7 + एलएक्सएमएल = यूनिकोड पार्सररर
- 29. एचटीएमएल आईएमजी टैग को लाटेक्स
वास्तव में क्या जरूरत है। धन्यवाद! – Cryptite
टाइप-ओ ?: node_a लाइन पर node_b होना चाहिए "node_f.append (node_a) # अब 'ए' 'f' के अंतर्गत गहरा है" (टिप्पणी 'ए' भी ठीक करें) –