在XOM中查询节点

时间:2012-01-04 12:22:29

标签: java xpath xom

我在XOM中查询文档,获取节点,然后查询此节点以获取另一个节点。但是,查询Node的行为就像查询整个文档一样,而不仅仅是查询此节点。

XML就像这样:

<root>
  <someotherstuff>
    <DifferentNode>
      <Value1>different-value1</Value1>
    </DifferentNode>
    <Node>
      <Node>
        <Value1>value1</Value1>
        <Value2>value2</Value2>
      </Node>
      <Node>
        <Value1>value3</Value1>
        <Value2>value4</Value2>
      </Node>
      <!-- more Node's -->
    </Node>
  </someotherstuff>
</root>

我正在这样做:

Nodes nodes = document.query("//Node/Node", X_PATH_CONTEXT);
Node node = nodes.get(0);

Nodes innerNodes = node.query("/Value1");

innerNodes包含0个孩子。当我将"/Value1"更改为"//Value1"(添加了斜杠)时,我得到的是不同的value1,所以看起来它正在查询整个文档,而不是我选择的节点。

如何查询XOM中的特定节点?

1 个答案:

答案 0 :(得分:4)

当您的查询以单斜杠开头时,这会查找具有给定名称的文档根节点。相反,两个斜杠意味着查找给定名称的所有祖先。如果您只是省略前导斜杠,那么您的查询应该有效:

Nodes innerNodes = node.query("Value1");