如何修复重叠的 XML

How to fix that overlapping XML?

本文关键字:XML 重叠 何修复      更新时间:2023-10-16

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

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

我正在考虑一个脚本来解析XML文件并解决此问题,例如:

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

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

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

>>> 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>'

至于C++您可以使用POCO库XML(文档)功能来编辑XML文件: Poco::XML::D ocument

这是我在 Python 中处理 xml 的最佳工具: lxml

但是,您的问题恐怕无法使用lxml解决,因为该xml无效。我鼓励您使用一些xml工具或库(lxml)来生成有效的xml并避免此类问题。