【发布时间】:2015-06-04 19:27:35
【问题描述】:
我想清理我的 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,而不是尝试在它是字符串时这样做?
-
“空标签”是什么意思?你的意思是一个独立的标签,即使它有属性?
-
使用正则表达式路由这可能有效
(?s)<[\w:]+(?:\s+(?:".*?"|'.*?'|[^>]*?)+)?/>