我通过从列表中添加一些节点和值来更改一些xml。我可以成功地创建所有新的标记和值,我在贡献者标记之间创建它们,但是当我将xml保存到一个新文件中时,我创建的标记都在一行上。下面是我的代码示例:
templateXml = """<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<package>
<delivery_type>new</delivery_type>
<feature>
<feature_type>Movie</feature_type>
<contributors>
</contributors>
</package>"""
from lxml import etree
tree = etree.fromstring(templateXml)
node_video = tree.xpath('//feature/contributors')[0]
for cast in castList:
pageElement = etree.SubElement(node_video, 'contributor')
node_video1 = tree.xpath('//feature/contributors/contributor')[0]
pageElement.attrib['type'] = 'cast'
pageElement1 = etree.SubElement(pageElement, 'name')
pageElement1.text = cast.text
pageElement2 = etree.SubElement(pageElement, 'role')
pageElement2.text = "actor"
xmlFileOut = '/Users/User1/Desktop/Python/Done.xml'
with open(xmlFileOut, "w") as f:
f.write(etree.tostring(tree, pretty_print = True, xml_declaration = True, encoding='UTF-8', standalone="yes"))
以下是保存的xml文件:
^{pr2}$我在打开xml文件以使用以下代码工作时解决了此问题:
from lxml import etree
parser = etree.XMLParser(remove_blank_text=True) # makes pretty print work
path3 = 'path_to_xml_file'
open(path3)
tree = etree.parse(path3, parser)
root = tree.getroot()
tree.write(xmlFileOut, pretty_print = True, xml_declaration = True, encoding = 'UTF-8')
这是可行的,但是如何让它与字符串xml一起工作呢?在
一个简单的解决方案可能是使用StringIO:
取自http://ruslanspivak.com/2014/05/12/how-to-pretty-print-xml-with-lxml/
相关问题 更多 >
编程相关推荐