给定一个 Stream 作为输入,我如何安全地创建一个针对 XML 数据源的 XPathNavigator?
XML 数据源:
- 可能包含需要删除的无效十六进制字符。
- 可能包含与文档声明的编码不匹配的字符。
例如,云中的某些 XML 数据源将声明编码为utf-8,但实际编码为windows-1252或ISO 8859-1,这可能会导致在创建 XmlReader 时抛出无效字符异常流。
来自StreamReader.CurrentEncoding属性文档:“当前阅读器使用的当前字符编码。在第一次调用 StreamReader 的任何 Read 方法后,该值可能不同,因为在第一次调用 Read 方法之前不会进行编码自动检测。 " 这似乎表明可以在第一次读取后检查 CurrentEncoding,但是当我们需要将 XML 数据写入 Stream 时,我们是否会卡住存储此编码?
我希望找到一种最佳实践,针对 XML 数据源安全地创建 XPathNavigator/IXPathNavigable 实例,该数据源将优雅地处理编码无效字符问题(最好在 C# 中)。