2016-07-28 60 views
2

因此,我在我的Java应用程序中使用XPath来分析xml文件。文件格式如下:XPath表达式用于选择所有没有后继者的子节点Java

<RootNode> 
    <Node1>Value 1</Node1> 
    <Node2> 
     <Node2-1> 
      <Node2-1-1>Value 2.1.1</Node2-1-1> 
     </Node2-1> 
    </Node2> 
    <Node3>Value 3</Node3> 
</RootNode> 

我想抓住只有Node1和Node3在一般的方式。使用RootNode上下文,我尝试过:

child::[text()] 
*/text() 
*/node() 
* 

*让我最接近但抓住了Node2。如何才能获得单个有价值的节点并忽略带有死者的节点?

+0

是值1“节点1”的后裔?如果是的话,应该排除Node1吗? –

+0

值1是Node1内部的字符串值。我认为,至少在我已经完成的少数Java测试中,它算作文本节点,但我希望能够检索包括字符串的整个节点。 – MrJman006

回答

1

我想这在XPath的在线测试仪,它的工作:

RootNode/node()[not(*)] 
+0

这对我来说有一点小修改。由于我的应用程序中已经有RootNode上下文,因此我不需要指定“RootNode /”部分。我只需要“node()[not(*)]”。 – MrJman006

+0

作为不使用Java XPath解析器的一方,其他“文本”节点也将被检索,但通过node.type()上的Node.ELEMENT_NODE进行过滤将获得您感兴趣的内容。 – MrJman006

相关问题