从XPath表达式返回一个布尔值

Jer*_*ink 2 .net xpath

我们希望通过XPath表达式实现对元素的存在检查.XPath表达式是在外部定义的.我们正在尝试使用System.Xml.XPath中的XPathEvaluate扩展方法,但是当我们尝试执行以下操作时它会抱怨.

XDocument d = new XDocument(
                new XElement("test", 
                    new XElement("element"),
                    new XElement("element")));
bool b = (bool)d.XPathEvaluate("/test/element[exists()]");
Run Code Online (Sandbox Code Playgroud)

此函数当前失败,并出现"需要命名空间管理器或XsltContext.此查询具有前缀,变量或用户定义的函数.".如果我们尝试,我们会收到相同的消息exists(/test/element).

我们想在XPath表达式中表达的其他事情之一是元素的数量,例如count(/text/element) = 2.

测试条件应该是XPath表达式的一部分.

函数调用d.XPathEvaluate("/test/element[last()]")按预期进行求值.

有可能用XPathEvaluate这种方式吗?

[编辑]是的.

如果没有,.Net框架中是否有其他选择?

[编辑]是的.

[编辑]剩下的问题:为什么exists功能不起作用?

San*_*pas 5

你试过XPath了吗?

boolean(/test/element)
Run Code Online (Sandbox Code Playgroud)