2014-10-30 118 views
1

我想获得所有节点的属性名称的值。我的XML是如何使用xpath在xml中获取节点的属性值?

<branches> 
    <branch-area name="abc"> 
     <branch> 
      <branch-name> xyz Street</branch-name> 
     </branch> 
    </branch-area> 
    <branch-area name="def 11"> 
     <branch> 
      <branch-name>pqr</branch-name> 
     </branch> 
    </branch-area> 
    <branch-area name="ghi 14"> 
     <branch> 
      <branch-name>jkl</branch-name> 
     </branch> 
    </branch-area> 
</branches> 

对我使用下面的代码

String xpathExpression = "//branch-area[@name]"; 
      NodeList list = (NodeList) XPathFactory.newInstance().newXPath().evaluate(xpathExpression,inputSource, XPathConstants.NODESET);      
      for(int i=0; i<list.getLength();i+=1) 
      {  
       System.out.println(list.item(i).getFirstChild().getNodeValue());  
      } 

,但我得到一个空字符串可以请你告诉我,我错了?

+0

部分重复 - 除了XPath表达式之外,还有更多这个问题。 – 2014-10-30 12:28:45

回答

4

//branch-area[@name]将返回元素节点 - 那些branch-area元素具有name属性。如果你需要的属性节点,然后自己用

//branch-area/@name 

,你不需要在循环中getFirstChild(),如属性节点持有的价值,而不是直接有文本节点孩子。

相关问题