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

时间:2017-04-06 19:26:31

标签: c# xml validation xpathdocument

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

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

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

......等等

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

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

在Microsoft页面上,我没有找到任何有关该假设行为的提示 - 您能验证它吗?

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

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

享受周末 亚历克斯。

1 个答案:

答案 0 :(得分:0)

没有解决方法。如果文档不是有效的XML文档,或者文档中存在无效字符或部分,则会获得异常。

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

也许最好的做法是编写一个XML验证器/修复类,在尝试使用XPathDocument类加载它之前,先将XML文档放入其中,尽管我非常确定必须有一些库出来能够为你做所有繁重的工作......