XQSharp XPathEvaluate上的XdmException

时间:2010-05-05 20:00:16

标签: c# xml xpath

我正在尝试使用XQSharp评估XPathExpression并获取错误:“类型检查错误。无法将空序列强制转换为'xs:integer'类型。”

AltovaXMLSpy将其正确评估为“true”。

oXmlDoc.CreateNavigator().XPathEvaluate("root/foo/bar cast as xs:integer lt count(root/blah/blub)", oNamespaseManager).ToString()

这个XML看起来像这样:

<root xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <foo>
        <bar>0</bar>
    </foo>
    <blah>
        <blub/> 
    </blah>
</root>

我错过了什么?

2 个答案:

答案 0 :(得分:1)

<强>更新

没有.NET提供的支持XPath 2.0的XPath引擎。

初步回复:

oXmlDoc.CreateNavigator()
          .XPathEvaluate("root/foo/bar cast as xs:integer lt count(root/blah/blub)",
                          oNamespaseManager
                        )
                         .ToString()

很可能实际的XML文档(评估XPath表达式)不是您提供的文档,或者当前(上下文)节点不是文档节点。

答案 1 :(得分:1)

路径表达式“root / foo / bar”不能返回任何节点。

命名空间管理器中的默认命名空间是否与文档的默认命名空间匹配?

您可以尝试使用.NET XPath函数测试路径表达式的这一部分,以确保返回正确的节点:

oXmlDoc.CreateNavigator().Evaluate("root/foo/bar", oNamespaceManager)