我有一大组现有的 xml 文件,我正在尝试向所有这些文件添加一个元素(对于许多 Maven 项目,它们是 pom.xml,我正在尝试向所有这些文件添加一个父元素他们)。以下是我的确切代码。
问题是 pom2.xml 中的最终 xml 输出在一行中包含完整的 parent
元素。虽然,当我自己打印元素时,它像往常一样将它写成 4 行。如何使用 parent
元素的正确格式打印出完整的 xml?
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()
打印输出:
<parent>
<groupId>org.myorg</groupId>
<artifactId>myorg-master-pom</artifactId>
<version>1.0.0</version>
</parent>
pom2.xml 中相同元素的输出:
<parent><groupId>com.inmobi</groupId><artifactId>inmobi-master-pom</artifactId><version>1.0.1</version></parent><modelVersion>4.0.0</modelVersion>
最佳答案
您可能对此感兴趣。
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)
关于python - 将新元素插入现有 xml 时,lxml 不添加换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13683014/