我的英语不是他最好的,但我认为它会起作用。 我也是C#的绝对新人。
给出以下代码片段: 它必须打开一个XML文档,我知道其中一个节点可能会被错误解释,顺便说一下是错误的。
try
{
XPathDocument expressionLib = new XPathDocument(path);
XPathNavigator xnav = expressionLib.CreateNavigator();
}
......等等
我的目的是创建XPathDocument和XPathNavigator,然后注意错误。
但是我的代码失败了" XPathDocument expressionLib = new XPathDocument(path);" (好吧,它引发了我捕获的一个例子)所以我假设" XPathDocument(path);"在返回之前验证整个XML文档。
在Microsoft页面上,我没有找到任何有关该假设行为的提示 - 您能验证它吗?
而且,可能的解决方法是什么?
是的,我想在内部(而不是在最顶层的节点)打开带有该错误的XML,并仅针对该无效节点做出反应并使用该文件的其余部分。
享受周末 亚历克斯。
答案 0 :(得分:0)
没有解决方法。如果文档不是有效的XML文档,或者文档中存在无效字符或部分,则会获得异常。
继续的唯一方法是处理XmlException并尝试操作Xml数据以使其有效,如果你只是将一些无效字符转移到复杂的问题,那么这可能是简单的。必须执行一些高级格式化,或者如果您收到包含许多不同类型错误的文档。
也许最好的做法是编写一个XML验证器/修复类,在尝试使用XPathDocument类加载它之前,先将XML文档放入其中,尽管我非常确定必须有一些库出来能够为你做所有繁重的工作......