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

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

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

最佳答案

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

//branch-area/@name

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

关于java - 如何使用xpath获取xml中节点的属性值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26651390/

相关文章:

java - 来自 Composer 的 ZK8 调用详细信息页面 (zul)

xml - 使用 XSLT 转换 XML 并保留 CDATA(在 Ruby 中)

xml - XSLT - 删除所有属性

xml - 如何捕获 XQuery 3.0 中的错误?

java - 使用 XPath 选择基于列值的复选框

perl - XML::Twig xpath 栏

java - 如何使用最新的 STS 版本(3.8.4.RELEASE)正确创建在控制台中运行的简单 Spring 项目?

java - 从内部类访问类级别的东西

java - java中如何根据id将一个列表分成3个列表

XPath 查找具有相似兄弟元素的元素