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

Python lxml在将新元素插入现有xml时不添加换行符,python,lxml,Python,Lxml,我有一大组现有的xml文件,我正在尝试向所有文件中添加一个元素(对于许多maven项目,它们是pom.xml,我正在尝试向所有文件中添加一个父元素)。下面是我的确切代码 问题是pom2.xml中的最终xml输出在一行中有完整的父元素。不过,当我单独打印元素时,它会像往常一样用4行写出它。如何为父元素打印格式正确的完整xml from lxml import etree parentPom = etree.Element('parent') groupId = etree.Element('gr

我有一大组现有的xml文件,我正在尝试向所有文件中添加一个元素(对于许多maven项目,它们是pom.xml,我正在尝试向所有文件中添加一个父元素)。下面是我的确切代码

问题是pom2.xml中的最终xml输出在一行中有完整的
父元素。不过,当我单独打印元素时,它会像往常一样用4行写出它。如何为
父元素
打印格式正确的完整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>

org.myorg
迈尔格大师赛
1.0.0
pom2.xml中相同元素的输出:

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

这可能对您有好处

简而言之,供将来参考:

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

还要记住,对于root.iter()中的元素:
:element.tail=None
也可能是必需的。