将新元素插入现有 xml 时,lxml 不添加换行符

2024-02-27

我有一大堆现有的 xml 文件,我试图向所有文件添加一个元素(它们是许多 Maven 项目的 pom.xml,我试图向所有文件添加一个父元素)。以下是我的确切代码。

问题是 pom2.xml 中的最终 xml 输出具有完整的parent元素在一行中。不过,当我单独打印该元素时,它会像往常一样以 4 行写出。如何打印出具有正确格式的完整 xmlparent元素?

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 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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将新元素插入现有 xml 时,lxml 不添加换行符 的相关文章

随机推荐