为什么XPath.selectNodes(context)总是在JDOM中使用整个文档

Sim*_*eon 1 java xml xpath jdom

我试图在几个不同的上下文中运行相同的查询,但我总是得到相同的结果.这是一个示例xml:

<root>
<p>
  <r>
    <t>text</t>
  </r>
</p>
<t>text2</t>
</root>
Run Code Online (Sandbox Code Playgroud)

所以这就是我正在做的事情:

final XPath xpath = XPath.newInstance("//t");

List<Element> result = xpath.selectNodes(thisIsThePelement); 
// and I've debuged it, it really is the <p> element
Run Code Online (Sandbox Code Playgroud)

我总是<t>在结果列表中得到这两个元素.我只需要在<t>里面<p>我传递的XPath对象.

任何想法都会有很大的帮助,谢谢.

Jon*_*eet 9

您正在使用"//t"XPath表达式,这意味着精确地"查找t文档中的所有元素".

要仅从上下文节点中查找后代 t元素,请使用".//t".

有关更多详细信息,请参阅XPath规范的"缩写语法"部分.