我有个问题。我在XML代码中进行了一些更改,但有时会重叠,例如:

<xref><mytag></xref></mytag>


我正在考虑一个脚本,它将解析XML文件并修复该问题,例如:

<xref><mytag></mytag></xref><mytag></mytag>


有人可以帮我吗?也许一些正则表达式?或一些可供使用的工具,python脚本等。我有很多文件要修复,我将不胜感激每一个建议!

最佳答案

使用lxml;该库可以尝试通过设置recover标志来解析无效的XML并将其清理:

>>> from lxml import etree
>>> from StringIO import StringIO
>>> ex = '<xref><mytag>there is some text</xref></mytag>'
>>> parser = etree.XMLParser(recover=True)
>>> tree = etree.parse(StringIO(ex), parser)
>>> etree.tostring(tree.getroot())
'<xref><mytag>there is some text</mytag></xref>'

09-15 21:22