2014-10-30 7 views
1

Я хочу получить значение имени атрибута всех узлов. мой XML являетсяКак получить значение атрибута узла в xml с помощью xpath?

<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. –

ответ

4

//branch-area[@name] будет возвращать узлы элементов - те branch-area элементы, которые имеют атрибут name. Если вы хотите, чтобы узлы атрибутов, то сами используют

//branch-area/@name 

и вам не нужно getFirstChild() в цикле, так как атрибут узлы хранения значения непосредственно, а не имеющие текстовый узел детей.

Смежные вопросы