gpt4 book ai didi

python - 清理 xml ==> 如果有空标签则删除行

转载 作者:数据小太阳 更新时间:2023-10-29 01:54:22 25 4
gpt4 key购买 nike

我想清理我的 xml,这样它不仅是有效的 XML,而且以一种非常易于阅读的方式格式化。例如:

<Items>
<Name>Hello</Name>
<Cost>9.99</Cost>
<Condition/>
</Items>

我想删除所有带有空标签的行,留下:

<Items>
<Name>Hello</Name>
<Cost>9.99</Cost>
</Items>

我尝试使用正则表达式执行此操作,但在以可读格式保留它方面运气不佳:

txt = etree.tostring(self.xml_node, pretty_print=True)
txt = re.sub(r'<[a-zA-Z]+/>\n', '', txt)

完成上述任务的最佳方法是什么?

最佳答案

使用XML 解析器

思路是find all empty nodes使用 //*[not(node())] XPath 表达式和 remove them from the tree .例如,使用 lxml :

from lxml import etree


data = """
<Items>
<Name>Hello</Name>
<Cost>9.99</Cost>
<Condition/>
</Items>
"""

root = etree.fromstring(data)
for element in root.xpath(".//*[not(node())]"):
element.getparent().remove(element)

print etree.tostring(root, pretty_print=True)

关于python - 清理 xml ==> 如果有空标签则删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30652470/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com