Mam duży zbiór istniejących plików XML, a ja staram się dodać jeden element do wszystkich z nich (są pom.xml dla szeregu projektów Maven i próbuję dodać element nadrzędny do wszystkich z nich). Oto mój dokładny kod.nie lxml dodanie nowego wiersza podczas wstawiania nowego elementu do istniejących xml
Problem polega na tym, że ostateczny wynik xml w pom2.xml zawiera cały element parent
w jednym wierszu. Chociaż, kiedy sam wypiszę element, zapisuje go jak zwykle w 4 liniach. Jak wydrukować pełny plik XML z odpowiednim formatowaniem dla elementu parent
?
from lxml import etree
parentPom = etree.Element('parent')
groupId = etree.Element('groupId')
groupId.text = 'org.myorg'
parentPom.append(groupId)
artifactId = etree.Element('artifactId')
artifactId.text = 'myorg-master-pom'
parentPom.append(artifactId)
version = etree.Element('version')
version.text = '1.0.0'
parentPom.append(version)
print etree.tostring(parentPom, pretty_print=True)
pom = etree.parse("pom.xml")
projectElement = pom.getroot()
projectElement.insert(0, parentPom)
file = open("pom2.xml", 'wb')
file.write(etree.tostring(projectElement, pretty_print=True))
file.close()
Wyjście kopii:
<parent>
<groupId>org.myorg</groupId>
<artifactId>myorg-master-pom</artifactId>
<version>1.0.0</version>
</parent>
Wyjście z tego samego elementu w pom2.xml:
<parent><groupId>com.inmobi</groupId><artifactId>inmobi-master-pom</artifactId><version>1.0.1</version></parent><modelVersion>4.0.0</modelVersion>
Należy również pamiętać, że 'dla elementu root.iter(): element.tail = None' może być również konieczne. – AARyuzakiKK