Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java XPathExpression动态返回值_Java_Xpath - Fatal编程技术网

Java XPathExpression动态返回值

Java XPathExpression动态返回值,java,xpath,Java,Xpath,我需要在不知道其返回值的情况下计算xpath表达式。我不关心节点和节点集之间的区别,但我关心节点集与字符串或数字之间的区别 例如,带有sum或concat函数的xpath可以返回数字或字符串(或布尔值)。具有常规xml路径的xpath返回节点集,可能只有一个节点 如何调用XPathExpression.evaluate()函数(javadoc)?我不知道将什么QName作为第二个参数传递给它。类XPathConstants包含允许的常数的封闭列表(这些是节点、节点集、字符串、数字和布尔值) 是否

我需要在不知道其返回值的情况下计算xpath表达式。我不关心节点和节点集之间的区别,但我关心节点集与字符串或数字之间的区别

例如,带有
sum
concat
函数的xpath可以返回数字或字符串(或布尔值)。具有常规xml路径的xpath返回节点集,可能只有一个节点

如何调用
XPathExpression.evaluate()
函数(javadoc)?我不知道将什么QName作为第二个参数传递给它。类
XPathConstants
包含允许的常数的封闭列表(这些是节点、节点集、字符串、数字和布尔值)

是否可以指定一个“all”或“don't care”值,然后检查返回的对象的类型


我想也许可以使用这个函数的重载版本,它总是返回一个字符串。但是,如果xpath表达式要返回一个节点集,我看不出这将如何工作。

Re:获取字符串-如果表达式引用节点集,则获取其文本表示。可能是这样的:

这个

读取为字符串“thisthat”,根据配置带或不带空格。你不试试就不会知道


就我个人而言,我更喜欢Dom4J,因为您可以使用booleanValueOf、numberValueOf、selectNodes和selectSingleNode等方法来控制接收内容。代码也很清楚:它说的是您想要得到的内容,因此很容易理解。

Re:获取字符串-如果表达式引用节点集,则得到它的文本表示。可能是这样的:

这个

读取为字符串“thisthat”,根据配置带或不带空格。你不试试就不会知道


就我个人而言,我更喜欢Dom4J,因为您可以使用booleanValueOf、numberValueOf、selectNodes和selectSingleNode等方法来控制接收内容。代码也很清楚:它说明了你想要得到什么,所以很容易理解。

根据Alejandro的提示,我发现Xalan 2.7.1已经支持它了


我使用了Xalan的类
xpatheevaluatorImpl
。它工作得很好,我可以指定
ANY-TYPE
作为返回值。唯一的缺点是,这个功能在标准javax api中没有公开,至少在Java 6中没有公开。

根据Alejandro的提示,我发现Xalan 2.7.1已经支持它了


我使用了Xalan的类
xpatheevaluatorImpl
。它工作得很好,我可以指定
ANY-TYPE
作为返回值。唯一的缺点是,这个功能没有在标准的javax api中公开,至少在Java 6中没有公开。

它可以用于任何后续的实现Hey Alejandro,这是非常有用的输入。我发现Xalan 2.7.1有一个类XpatheEvaluatorImpl,它提供了您提到的功能,因此我可以直接使用它(而不是通过javax工厂api)。如果你添加你的评论作为回答,我会接受。你可以回答你自己的问题。最后,您找到了为您的语言实现DOM XPath的XPath引擎。它可以与下面的任何实现一起使用嘿,Alejandro,这是非常有用的输入。我发现Xalan 2.7.1有一个类XpatheEvaluatorImpl,它提供了您提到的功能,因此我可以直接使用它(而不是通过javax工厂api)。如果你添加你的评论作为回答,我会接受。你可以回答你自己的问题。最后,您找到了为您的语言实现DOM XPath的XPath引擎。