我正在尝试使用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>
我错过了什么?
答案 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)