我收到了一些用XML表示的坏数据,我想知道vb.net中是否有任何方法可以使用XML数据来遍历字符串,并安全地清理我一直获取的包括',<,>,&内部属性值在内的文件的垃圾数据,并想知道如何最好地检查和整理格式错误的XML。
目前,我只有一个函数,我一直在添加字符串替换,但坏数据可能是随机的,可能需要一段时间,我才意识到有一个问题。
我想知道在reg中有什么方法可以解决这个问题吗?还是.NET中有一个函数可以安全地将坏的XML转换成安全的XML呢?
我知道最简单的解决方案是更改源代码,但是这是不可能的,因为它来自一个封闭的源遗留系统。
谢谢马特
发布于 2013-07-26 10:21:06
当应用程序不正确地生成XML时,最常见的错误可能是无法转义特殊字符,如"<“、"&”和“”。在某些情况下,该bug将生成无法识别和修复的内容,因为它输出格式良好的XML (但不是XML预期的)。
不能转义属性中的“”可能特别难修复,因为未转义的“”看起来像属性值的结尾,而在文件后面可能会出现XML语法错误。
大多数情况下,不能转义"&“或"<”要容易一些,因为您可以检测到这些字符何时没有在格式良好的XML中合法地跟随它们--在'&‘、名称或"/name“或"!”的情况下,名称和分号。在"<“的情况下。如果这是你所要寻找的,你只会捕捉到90%的错误,但这可能总比什么都没有好。
更好的办法是回到那些把垃圾寄给你的人那里,然后把它修好。他们发出这样的垃圾,对任何人都没有好处。
发布于 2013-07-26 08:33:41
您需要通过编写一个函数来清理您的输入,该函数通过迭代每个字符来替换所有这些非xml支持的字符,并且如果char不属于各个xml实体的<和>字符之间。
有关在维基中可以看到的完整列表
一旦替换了这些字符,就会得到一个有效的xml,您可以使用任何XML解析器来解析该XML。
https://stackoverflow.com/questions/17876537
复制相似问题