我有个问题。我正在对 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>'
这是我在 Python 中处理 xml 的最佳工具:lxml
但是,您的问题恐怕无法用 lxml 解决,因为该 xml 无效。我鼓励您使用一些 xml 工具或库 (lxml) 来生成有效的 xml 并避免此类问题。
至于 C++,您可以使用 POCO 库 XML(文档)功能来编辑您的 XML 文件:Poco::XML::Document