用于处理无效 XML 的 .NET 解析器 [重复]

Posted

技术标签:

【中文标题】用于处理无效 XML 的 .NET 解析器 [重复]【英文标题】:Parser for .NET that will handle invalid XML [duplicate] 【发布时间】:2011-08-21 22:45:46 【问题描述】:

我需要从第 3 方来源读取一些 XML。他们的文本字段都没有包含在 CDATA 标记中,并且他们不能保证这些值不会包含无效字符——我特别想到了与号。他们也不会添加 CDATA 标签,因为这可能会破坏他们现有客户的东西。有没有可以处理这个的解析器?

【问题讨论】:

如果不是 XML,那么您无法使用 XML 解析器读取它。您的第 3 方应该停止谎报他们发送 XML 的事实 - 显然,他们不发送 XML。 是否有可能通过合理的稳健性和努力,在使用标准 XML 解析器之前使无效的 XML“有效”? 【参考方案1】:

假设无效字符被正确转义,而不是直接包含在 XML 中,您可以使用 .NET 库通过创建一个将 Normalization 属性设置为 false 的 XmlTextReader 来读取它。见http://msdn.microsoft.com/en-us/library/system.xml.xmltextreader.normalization.aspx

【讨论】:

(那么数据不是严格意义上的 XML。)我会通过一个函数运行流,用正确的转义序列替换非法字符。 足够接近...我在想这会导致问题 b/c 某些字符可能已经被转义。但我想我可以只添加 CDATA 标签。

以上是关于用于处理无效 XML 的 .NET 解析器 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Java SAXParser 解析无效的 xml [重复]

非常简单的 C/C++ XML 解析器 [重复]

解析无效的 XML C# [重复]

处理 SAX 解析异常

用于 Java 的 HTML/XML 解析器 [关闭]

解析Xml数据错误:文本内容中发现无效字符怎么处理