C# XPathDocument(Path) 在返回文档之前评估整个路径吗?

C# does XPathDocument(Path) evaluate the whole path before returning the document?

我的英语不是最好的,但我认为它会起作用。 我也是 C# 的绝对新手。

给定以下代码片段: 它必须打开一个 XML 文档,从中我知道其中一个节点可能被错误解释,顺便说一句,它确实是错误的。


try          
{
    XPathDocument expressionLib = new XPathDocument(path);
    XPathNavigator xnav = expressionLib.CreateNavigator();
}

...等等


我的目的是创建 XPathDocument 和 XPathNavigator,然后注意错误。

但是我的代码因 "XPathDocument expressionLib = new XPathDocument(path);" 而失败(好吧,它引发了一个我发现的异常)所以我假设 "XPathDocument(path);" 在返回之前验证了整个 XML 文档。

在 Microsoft 页面上,我没有找到任何关于该假定行为的提示 - 你能验证一下吗?

还有,解决方法是什么?

是的,我想打开那个 XML 里面有那个错误(不是在最顶层的节点)并且只对那个无效的节点做出反应并处理文件的其余部分。

享受周末 亚历克斯

没有解决方法。如果文档不是有效的 XML 文档或文档中有无效字符或部分,您将得到异常。

继续的唯一方法是处理 Xml 异常并尝试操纵 Xml 数据以使其有效,如果只是转义一些无效字符,则可能很简单(s) 如果您必须执行一些高级格式设置或者如果您收到的文档包含许多不同类型的错误,则变得复杂。

也许最好的做法是编写一个 XML validator/repair class 并在尝试使用 XPathDocument class 虽然我很确定那里一定有一些图书馆能够为您完成所有繁重的工作...