在lxml中,給定一個元素,有可能在xml文檔的其他地方移動整個東西,而不必讀取它的所有子元素並重新創建它?我最好的例子就是改變父母。我在文檔上翻了一下,但沒有多少運氣。提前致謝!用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>'
移動節點具有時要小心尾巴文字。在lxml尾部文本屬於該節點並隨其移動。 (此外,當你刪除一個節點,它的尾巴文本也被刪除)
>>> 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
你可以使用.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. 使用波旁整潔移動元素
- 3. 如何將整個div元素向上移動x個像素?
- 4. 逆轉與蟒蛇lxml.etree元素
- 5. 移動元素更多到左側,沒有移動元素通過調整
- 6. 移動一個br元素
- 7. 移動一個div元素
- 8. 移動元素?
- 9. jQuery:將整個元素移動到另一個元素中,但不移動它的內容
- 10. 用javascript移動一個元素
- 11. 用動畫將元素從一個父元素移到另一個元素
- 12. 使用jQuery移動元素
- 13. 使用XSLT移動元素
- 14. 使用CSS移動元素
- 15. 用append()移動DOM元素?
- 16. 使用javascript移動元素
- 17. 使用javascript移動元素
- 18. 移動子元素
- 19. 移動元素shortdesc
- 20. 移動HTML元素
- 21. CSS3移動元素
- 22. 的Android在調整大小和移動多個畫布元素
- 23. 將(每個)元素移動到第一個匹配的元素
- 24. 自動移動GALLARY元素
- 25. 元素移動jquery滾動
- 26. 使用lxml.etree讀取元素中的文本
- 27. 浮動元素下元素的位移
- 28. 如何用滾動移動html元素?
- 29. 將其中一個元素移到另一個元素中,其餘元素將移動到第三個位置
- 30. 在JS中移動一個元素
究竟是什麼。謝謝! – Cryptite
Type-o ?: node_a應該是node_b online「node_f.append(node_a)#現在'a'在'f'之下'(同時修復註釋'a') –