.net 从XPath表达式返回布尔值
我们希望通过XPath表达式实现元素的存在性检查。XPath表达式是在外部定义的。我们试图使用System.Xml.XPath中的xpatheevaluate扩展方法,但当我们尝试执行以下操作时,它会出现问题.net 从XPath表达式返回布尔值,.net,xpath,.net,Xpath,我们希望通过XPath表达式实现元素的存在性检查。XPath表达式是在外部定义的。我们试图使用System.Xml.XPath中的xpatheevaluate扩展方法,但当我们尝试执行以下操作时,它会出现问题 XDocument d = new XDocument( new XElement("test", new XElement("element"), new XElement(
XDocument d = new XDocument(
new XElement("test",
new XElement("element"),
new XElement("element")));
bool b = (bool)d.XPathEvaluate("/test/element[exists()]");
此函数当前失败,出现异常“需要命名空间管理器或XsltContext。此查询具有前缀、变量或用户定义函数。”。如果我们尝试存在(/test/element)
,我们会得到相同的消息
我们希望在XPath表达式中表达的另一件事情是元素的数量,例如count(/text/element)=2
测试条件应该是XPath表达式的一部分
函数调用d.xpatheevaluate(“/test/element[last()]”)
的计算结果与预期一致
是否可以这样使用xpatheevaluate
[编辑]
对
如果没有,在.Net框架中是否有其他选择
[编辑]
对
[编辑]
剩下的问题:为什么
函数不存在?经过更多的实验,我似乎回答了我自己的问题
当然,您可以执行count(/test/element)>0
作为现有检查。(我们和三个人一起看这个:-()
您是否尝试过XPath:
boolean(/test/element)
剩下的问题:为什么
存在功能工作吗
您错误地调用了exists()函数。
与其在XPATH表达式的谓词中使用它,不如将XPATH表达式用作exists()函数的参数
bool b = (bool)d.XPathEvaluate("exists(/test/element)");
我们已经尝试了同样的结果,这在我的问题中已经提到了。
bool b = (bool)d.XPathEvaluate("exists(/test/element)");