0

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

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


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

...等等


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

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

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

而且,解决方法可能是什么?

是的,我想打开带有该错误的 XML(不是在最顶层节点),并仅针对该无效节点做出反应并使用文件的其余部分。

享受周末亚历克斯。

4

1 回答 1

0

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

继续的唯一方法是处理 XmlException 并尝试操作 Xml 数据以使其有效,其范围从简单(如果只是转义一些无效字符的问题)到复杂(如果您必须执行一些高级格式化或如果您收到包含许多不同类型错误的文档。

也许最好的做法是编写一个 XML 验证器/修复类,在尝试使用 XPathDocument 类加载它之前,您将通过它放置您的 XML 文档,尽管我很确定那里一定有一些库可以做到所有繁重的工作为你...

于 2017-04-06T19:52:22.817 回答