2012-12-03 47 views
9

में नया तत्व डालने पर न्यूलाइन जोड़ नहीं रहा है मेरे पास मौजूदा एक्सएमएल फाइलों का एक बड़ा सेट है, और मैं उन सभी को एक तत्व जोड़ने की कोशिश कर रहा हूं (वे कई मैवेन प्रोजेक्ट्स के लिए pom.xml हैं, और मैं उन सभी को मूल तत्व जोड़ने की कोशिश कर रहा हूं)। निम्नलिखित मेरा सटीक कोड है।एलएक्सएमएल मौजूदा xml

समस्या यह है कि pom2.xml में अंतिम xml आउटपुट में एक ही पंक्ति में पूर्ण parent तत्व है। हालांकि, जब मैं स्वयं तत्व को मुद्रित करता हूं, तो यह सामान्य रूप से 4 लाइनों में लिखता है। मैं 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() 

आउटपुट: pom2.xml में एक ही तत्व के

<parent> 
    <groupId>org.myorg</groupId> 
    <artifactId>myorg-master-pom</artifactId> 
    <version>1.0.0</version> 
</parent> 

आउटपुट:

<parent><groupId>com.inmobi</groupId><artifactId>inmobi-master-pom</artifactId><version>1.0.1</version></parent><modelVersion>4.0.0</modelVersion> 

उत्तर

11

यह आप के लिए ब्याज की हो सकती है।

http://lxml.de/FAQ.html#why-doesn-t-the-pretty-print-option-reformat-my-xml-output

भविष्य में संदर्भ के लिए संक्षेप में:

parser = etree.XMLParser(remove_blank_text=True) 
pom = etree.parse("pom.xml",parser) 
+0

भी याद रखें कि 'root.iter में तत्व के लिए(): element.tail = None' भी आवश्यक हो सकता है। – AARyuzakiKK