如何使用xpath获取xml中节点的属性值?

时间:2014-10-30 11:08:00

标签: java 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());    
            }

但是我得到一个空字符串你能告诉我我错在哪里吗?

1 个答案:

答案 0 :(得分:4)

//branch-area[@name]将返回元素节点 - 具有branch-area属性的name个元素。如果您想要属性节点本身,请使用

//branch-area/@name

并且您不需要循环中的getFirstChild(),因为属性节点直接保存值而不是文本节点子节点。