提问人:Autechre 提问时间:10/20/2023 最后编辑:Jean-François FabreAutechre 更新时间:10/20/2023 访问量:38
当我将元素添加到空元素时,lxml 打印失败
Pretty printing is failing with lxml when I add an element to an empty element
问:
当我将元素添加到空XML元素时,lxml模块的漂亮打印失败:
这是我的python代码:
import lxml.etree
xml_parser = lxml.etree.XMLParser(remove_blank_text=True)
xml_tree = lxml.etree.parse("myFile.xml", xml_parser)
root = xml_tree.getroot()
for elem in root:
if elem.tag == "apple":
lxml.etree.SubElement(elem, "McIntosh")
tree = lxml.etree.ElementTree(root)
tree.write("output.xml", pretty_print=True, xml_declaration=True, encoding="utf-8")
这是我的XML输入文件:
<fruits>
<apple>
</apple>
</fruits>
这是我的输出XML文件:
<?xml version='1.0' encoding='UTF-8'?>
<fruits>
<apple>
<McIntosh/></apple>
</fruits>
如果我的XML元素不为空,我的代码就可以工作:
<?xml version='1.0' encoding='UTF-8'?>
<fruits>
<apple>
<golden/>
<McIntosh/>
</apple>
</fruits>
如果我找不到解决方案,我将不得不实现自定义 xml 格式化程序。
有谁知道如何解决这个问题?
答:
1赞
I like Bananas
10/20/2023
#1
使用该函数来修复它。作为额外的奖励,这使您可以自定义缩进indent
import lxml.etree
xml_parser = lxml.etree.XMLParser(remove_blank_text=True)
xml_tree = lxml.etree.parse("myFile.xml", xml_parser)
root = xml_tree.getroot()
for elem in root:
if elem.tag == "apple":
lxml.etree.SubElement(elem, "McIntosh")
lxml.etree.indent(xml_tree, ' ')
tree = lxml.etree.ElementTree(root)
tree.write("output.xml", pretty_print=True, xml_declaration=True, encoding="utf-8")
输出如下:
<?xml version='1.0' encoding='UTF-8'?>
<fruits>
<apple>
<McIntosh/>
</apple>
</fruits>
评论
0赞
Autechre
10/20/2023
谢谢m8,它有效!
评论