在VB.net中修复和处理格式错误的XML

时间:2013-07-26 08:28:44

标签: xml regex vb.net

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

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

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

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

谢谢马特

2 个答案:

答案 0 :(得分:2)

当应用程序错误地生成XML时,最常见的错误可能是无法转义特殊字符,例如“&lt;”,“&amp;”和“”“。在某些情况下,此错误将产生无法生成的内容识别和修复,因为它输出格式良好的XML(但不是XML意图)。

在属性中无法转义“”“可能特别难以修复,因为未转义的”“”看起来像属性值的末尾,并且结果中的XML语法错误可能会在文件中稍后出现

未能逃脱“&amp;”或“&lt;”在大多数情况下,它会更容易一些,因为你可以检测到这些字符何时没有被合格的XML跟随它们的东西所遵循 - 在'&amp;'的情况下,名称和分号,名称或“ / name“或”!“在“&lt;”的情况下。如果这是你想要的,那么你只会捕获90%的错误,但这可能比没有好。

更好的方法是回到向你发送垃圾并将其修复的人身上。他们发送这样的垃圾并没有为任何人提供服务。

答案 1 :(得分:0)

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

有关完整列表,请参阅wiki

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