提问人:Autechre 提问时间:10/20/2023 最后编辑:Autechre 更新时间:10/20/2023 访问量:81
无法使用 lxml 进行管理,既有漂亮的打印,又没有将 xml 元素转换为自闭合元素
Can't manage with lxml to have both pretty printing and not turning xml elements to self-closing elements
问:
我目前正面临两难境地。
下面的代码无法正确打印我的 XML:
import lxml.etree
xml_tree = lxml.etree.parse("myFile.xml")
root = xml_tree.getroot()
for fruit in root:
if fruit.tag == "apple":
for apple in fruit:
if apple.tag == "McIntosh":
fruit.remove(apple)
tree = lxml.etree.ElementTree(root)
tree.write("output.xml", pretty_print=True, xml_declaration=True, encoding="utf-8")
这是我的XML输入文件:
<fruits>
<apple>
<McIntosh/>
</apple>
</fruits>
这是我的(丑陋的)输出XML文件。缩进不正确:
<?xml version='1.0' encoding='UTF-8'?>
<fruits>
<apple>
</apple>
</fruits>
我在某处读到,要让漂亮的打印真正起作用,我不得不使用带有如下选项的选项:lxml.etree.XMLParser
remove_blank_text=True
xml_parser = lxml.etree.XMLParser(remove_blank_text=True)
xml_tree = lxml.etree.parse("myFile.xml", xml_parser)
它实际上可以激活漂亮的打印,但另一方面,我的空XML元素现在变成了自闭合元素:
<?xml version='1.0' encoding='UTF-8'?>
<fruits>
<apple/>
</fruits>
有谁知道如何解决lxml漂亮打印的副作用?
答:
评论