2012-12-03 11 views
9

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> 

Odpowiedz

Powiązane problemy