如何修复重叠的XML?

时间:2012-05-28 13:44:47

标签: c++ python xml regex bash

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

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

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

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

任何人都可以帮助我吗?也许有些正规表达?或者一些工具准备好使用,python脚本等我有很多文件需要修复,我会很感激你的每一个建议!s

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

对于C ++,您可以使用POCO库XML(文档)功能来编辑XML文件:Poco::XML::Document