拥有XPath如何检查它是否会尝试匹配元素或属性

本文关键字:属性 元素 是否 何检查 XPath 检查 拥有 | 更新日期: 2023-09-27 18:00:45

我真正需要的是一种方法,用于识别XPath 2.0表达式是否引用了元素或属性。

假设一个方法具有以下原型:

XPathResultType IdentifyXPathResultType (string xpath)

对于等输入

//Parent[@id='1']/Children/child[@name]

该方法应该返回类似的内容

XPathResultType.Element

对于等输入

//Parent[@id='1']/Children/child/@name 

该方法应该返回类似的内容

XPathResultType.Attribute

上面的例子实现起来很简单,但是XPath 2.0有很多特性,需要实现一个智能解析器

在Javascript中有没有任何库或设施可以完成这样的事情?

我真的需要这个用于Javascript的客户端。

还有C#中的解决方案。NET是可以接受的

拥有XPath如何检查它是否会尝试匹配元素或属性

XPath 2.0定义了一个instance of运算符。这样你就可以测试之类的东西
//Parent[@id='1']/Children/child/@name instance of attribute()

在这种情况下将产生CCD_ 2。根据您使用的XPath解析器,您可能能够定义自己的函数,然后可以测试不同的元素类型并返回适当的响应项。

如果没有,您还可以多次运行XPath,每次都针对不同的数据类型进行测试。然而,这听起来不太理想,所以首选第一个选项。

如果您使用Saxon作为XPath解析器,那么在解析表达式后,您将能够深入到expression对象,该对象具有getItemType()方法,提供您要查找的信息。详细信息取决于您运行的平台。