lxml içinde, tüm öğelerini okumak ve yeniden oluşturmak zorunda kalmadan xml belgesindeki başka bir şeyi tüm nesneyi taşımak için bir öğe verildiğinde mümkün mü? En iyi örneğim ebeveynleri değiştiriyor. Dokümanları biraz karıştırdım ama çok şansım olmadı. Şimdiden teşekkürler!Tüm öğeyi lxml.etree ile taşıyın.
7
A
cevap
14
.append
, .insert
ve diğer işlemler sahip düğümleri taşırken varsayılan olarak
>>> 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>'
dikkatli olun bunu bir kuyruk metni. Lxml kuyruğunda metin, düğüme aittir ve onunla birlikte hareket eder.
>>> 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>'
Bazen istenen bir etki var (eğer bir düğüm silerken Ayrıca, kuyruğu metin de silinir), ama bazen böyle bir şey gerekir: Ben gerekli
>>> 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
Sen Mevcut öğeye bir cihazmda eklemek için .append()
, .insert()
yöntemleri kullanabilirsiniz:
>>> from lxml import etree
>>> from_ = etree.fromstring("<from/>")
>>> to = etree.fromstring("<to/>")
>>> to.append(from_)
>>> etree.tostring(to)
'<to><from/></to>'
İlgili konular
- 1. Listedeki bir öğeyi taşıyın mı?
- 2. lxml.etree, element.text,
- 3. Tüm bir klasörü Windows'tan Android öykünücüsüne taşıyın
- 4. Bir öğeyi st ++ :: deque öğesinden taşıyın C++ 11
- 5. Bootstrap Carousel Çoklu Öğeler Bir Öğeyi bir kerede taşıyın
- 6. jQuery sürüklenebilir + bırakılabilir - sürüklenen öğeyi fiziksel olarak düşürülmüş konteynere taşıyın
- 7. Intellij Idea Junit testleri ile "Refactoring'i taşıyın"
- 8. VB.NET ile fareyi programa tıklayın ve taşıyın
- 9. 'lxml.etree._ElementTree' nesne hiçbir özellik 'cssselect'
- 10. Büyük XML dosyaları için python lxml.etree kullanma
- 11. Bash/Shell-Tüm dosyaları alt dizinlerden hedef dizine taşıyın mı?
- 12. Android animasyonlar: görünümü tüm düzenler üzerinde başka bir görünüme taşıyın
- 13. Bir öğeyi Html.ActionLink ile sarmak ..?
- 14. Küresel istisnaları VB'ye taşıyın
- 15. Yapıcıları ve devralmayı taşıyın
- 16. Oluşturucu Taşıyın, std :: move kullanarak vektörü iki nesne arasında taşıyın.
- 17. Kaplar arasında çeşitli öğeler taşıyın mı?
- 18. eksen etiketleri taşıyın ggplot
- 19. Uygulamayı telefona taşıyın
- 20. Nesneyi oynatıcıya taşıyın
- 21. jQuery DOM öğesinin iç taşıyıcısını taşıyın
- 22. Magento - Programlı bir kategoriyi taşıyın
- 23. 1'den n öğelerine taşıyın
- 24. lxml python ile xml dosyasındaki öğeyi kaldır
- 25. Yinelenen koleksiyondaki öğeyi değiştirme ile ilgili kavramlar?
- 26. Neden SVG javascript ile oluşturulan öğeyi gösterilmiyor?
- 27. göç veya Flask-Taşıyın (Alembic) ile veritabanı Geçiş yapamıyor
- 28. Fare olayını JavaFX ile herhangi bir yere taşıyın
- 29. Excel'de birden çok öğeyi arayın ve tüm ortamı geri döndürün
- 30. Anlambilim ve const başvuruları taşıyın
Tam olarak ne. Teşekkürler! – Cryptite
Type-o ?: node_a, node_b on line olmalıdır "node_f.append (node_a) # Now" a "," f "nin altındadır (ayrıca 'a' yorumunu düzeltin) –