0

我收到了一些 XML 格式的错误数据,想知道在 vb.net 中是否有任何方法可以通过 XML 数据的字符串并安全地清理任何垃圾数据我不断获取包含',<,>,&内部属性值的文件,并且想知道如何最好我是否要通过并整理格式错误的 XML ..

目前我只有一个函数,我不断添加字符串替换,但坏数据可能是随机的,我可能需要一段时间才能意识到有问题。

我想知道有没有一种方法可以在 reg-ex 中解决这个问题,或者 .NET 中是否有一个函数可以安全地将错误的 XML 转换为安全的 XML?

我知道最简单的解决方案是更改源代码,但这是不可能的,因为它来自封闭源代码的遗留系统。

谢谢马特

4

2 回答 2

2

应用程序错误生成 XML 时最常见的错误可能是无法转义特殊字符,例如“<”、“&”和“”。在某些情况下,此错误会产生无法识别和修复的内容,因为它输出格式正确的 XML(但不是预期的 XML)。

未能在属性中转义 """ 可能特别难以修复,因为未转义的 """ 看起来像是属性值的结尾,并且导致的 XML 语法错误可能会在文件中稍晚一些。

大多数情况下,无法转义“&”或“<”会更容易一些,因为您可以检测到这些字符何时没有跟随可以在格式良好的 XML 中合法地跟随它们的东西——在这种情况下是名称和分号'&',名称或“/name”或“!” 在“<”的情况下。如果这是您要寻找的,您只会捕获 90% 的错误,但这总比没有好。

更好的是回到给你寄这些垃圾的人那里,把它修好。他们发送这种垃圾并没有为任何人提供服务。

于 2013-07-26T10:21:06.580 回答
0

您需要通过编写一个函数来清理您的输入,该函数通过迭代每个 char 来替换所有这些非 xml 支持的字符,并且如果 char 不属于各个 xml 实体的 < 和 > 字符之间。

您可以在wiki中查看完整列表

替换这些字符后,您将获得一个有效的 xml,您可以使用任何 XML 解析器对其进行解析。

于 2013-07-26T08:33:41.723 回答