繁体   English   中英

更正 XML 结束标签

[英]Correcting XML closing tags

我有多个 XML 文档由于在结束标签中省略了“/”而意外格式错误。 标签都是匹配的对,所以我们在每个文档中都有<tagname>内容<tagname>等等。 文档中有一个层次结构,因此我们在其他标签中确实有标签(所有打开和关闭的方式都相同)。 如果“/”在结束标记中,则文档将正确形成。

问题:将“/”插入结束标签的可靠且“简单”的方法是什么?

I'm comfortable working with Python (3), VB, VBA, C#, SQL, REGEX and so on. 我希望有人可能已经遇到过这种情况并且有一个可以使用的正则表达式。

大约有 2000 个 XML 文档,全部存储在 MySQL (8) 数据库(InnoDB 表)的 LONGTEXT 字段中。

非常感谢任何帮助或指导。

青蛙

在一般情况下,没有可靠且简单的方法可以做到这一点。 它需要一个完整的递归解析器(一个能够处理递归语法的)并且超出了正则表达式的能力。

如果您知道<tagname>元素不能嵌套,那么当您在另一个<tagname>中遇到<tagname>时,您就会知道它一定是错误的,应该是</tagname> 可以使用 SAX 解析器,检测嵌套的startElement事件,并替换endElement事件。 SAX 解析器在到达文档结尾时最终会失败,但到那时您可能已经拥有了您需要的所有信息。

如果标签可以嵌套,那么问题就会变得困难一个数量级,因为您现在需要提前知道哪些开始标签应该是结束标签——即使这样,也会涉及到猜测的元素。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM