我们想通过XPath表达式实现对元素的存在检查。 XPath表达式是在外部定义的。我们尝试使用System.Xml.XPath中的XPathEvaluate扩展方法,但是当我们尝试执行以下操作时,它会发出抱怨。从XPath表达式返回布尔值
XDocument d = new XDocument(
new XElement("test",
new XElement("element"),
new XElement("element")));
bool b = (bool)d.XPathEvaluate("/test/element[exists()]");
此功能目前失败,异常“命名空间管理器或XsltContext需要的。此查询具有前缀,变量,或用户定义的函数。”。如果我们尝试exists(/test/element)
,我们会得到相同的信息。
我们希望在XPath表达式中表达的其他内容之一是元素的数量,例如, count(/text/element) = 2
。
测试条件应该是XPath表达式的一部分。
函数调用d.XPathEvaluate("/test/element[last()]")
按预期进行评估。
这样可以使用XPathEvaluate
吗?
[编辑] 是的。
如果不是,那么.Net框架中是否有其他选择?
[编辑] 是的。
[编辑] 剩余的问题:为什么exists
函数不起作用?
不是之前,但只是测试它,它的工作原理。 – 2009-12-11 10:24:51