如何修复重叠的 XML
How to fix that overlapping XML?
>我有一个问题。我正在对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并避免此类问题。
相关文章:
- Cppcheck生成xml转储文件
- Ardunio UNO解决了多个重叠的定时器循环
- 在c++中检查长方体是否尽可能快地重叠(无迭代)
- 算术序列与区间的最大重叠
- 如何在pugixml中获取节点的内部XML
- 如何使用tinyxml2从XML加载父实体和子实体
- boost xml parsingl将xml的路径作为变量发送
- C++RapidXml-使用first_node()遍历以修改XML文件中节点的值
- 使用 Tinyxml 在 xml 中添加一个子子项
- 增强基于 XML class_id的反序列化
- 在 c++ 中使用 vtd-xml 时,如何摆脱 EOFException?
- 按顺序声明的字符数组重叠
- 拆分重叠段
- 防止在C++中选择错误文件时提升 xml 解析器崩溃
- c++ 读取 xml 文件的内容
- 删除 XML 文件中的子节点C++
- 使用 RapidXML 更新C++中的 XML 节点和属性值
- 在Cmake构建CmakeList.txt中读取/解析XML文件
- 从 XML 中读取未指定结构的每个数据成员
- 如何修复重叠的 XML