2012-01-04 3 views
1

Я запрашиваю документ в XOM, получая узел, а затем запрашивая этот узел для другого узла. Однако запрос узла ведет себя так же, как и запрос всего документа, а не только этого узла.Узел запроса в XOM

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" (слэш добавлен), то я получаю different-value1, поэтому похоже, что он запрашивает весь документ, а не мой выбранный узел.

Как я могу запросить определенный узел в XOM?

ответ

4

Когда ваш запрос начинается с одной косой черты, тогда он ищет корневой узел документа с заданным именем. Две черты контраста означают поиск всех предков данного имени. Ваш запрос должен работать, если вы просто опустите ведущую косую черту:

Nodes innerNodes = node.query("Value1"); 
Смежные вопросы