了解DOM4J的朋友肯定用过:
Node的selectNodes或者selectSingleNode方法,或者XPath的selectNodes或者selectSingleNode方法。
刚开始使用的时候我以为Node的selectNodes或者selectSingleNode是在Node结点下根据给定的XPath表达式进行查找的,XPath的方法也是根据参数中给定的node节点进行查找的。
后来在使用过程中发现其实不是这样的,不管你给定子结点还是整个Document,查找的过程都是在整个XML Document中进行的。
那么需要在指定结点下查询怎么办呢?
解决办法:
我查询了XPath语法发现:.号可以表示当前结点,所以在原来的XPath中加入一个.就可以了。
例如:我想查询students结点下的所有name结点,我这样使用studentsNode.selectNodes(".//name");这样的Java语句进行。这样XPath查询的话就只在studentsNode这个结点下进行了。
对自己以前的理解错误做一个记录,希望能帮助到有类似问题的朋友!
下面给出一个XPath的路径语法表:
表达式 | 描述 |
nodename | 选取此节点的所有子节点。 |
/ | 从根节点选取。 |
// | 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。 |
. | 选取当前节点。 |
.. | 选取当前节点的父节点。 |
@ | 选取属性。 |