java - 从 XPath 获取值

标签 java xml xpath

我需要从这个 xml 文档中获取一些值:

<node id="A." label="General Literature">
        <isComposedBy>
            <node id="A.0" label="GENERAL">
                <isComposedBy>
                    <node label="Biographies/autobiographies"/>
                    <node label="Conference proceedings"/>
                    <node label="General literary works (e.g., fiction, plays)"/>
                </isComposedBy>
            </node>
            <node id="A.1" label="INTRODUCTORY AND SURVEY"/>
            <node id="A.2" label="REFERENCE (e.g., dictionaries, encyclopedias, glossaries)"/>
            <node id="A.m" label="MISCELLANEOUS"/>
        </isComposedBy>
    </node>

在Java中,我如何只选择具有属性idlabel的节点,然后获取这些属性的值? 我尝试过使用以下表达式的 XPath:

XPathExpression expr = path.compile("//*/@id | /@label");

但这并没有返回我想要的。

最佳答案

使用//node[@id and @label]将获取所有具有idlabelnode元素> 属性。然后您需要循环节点以获取它们的属性值。使用 DOM 的示例:

    for(int i = 0; i < nodes.getLength(); i++) {
        Node node = nodes.item(i);
        NamedNodeMap attributes = node.getAttributes();
        System.out.println(attributes.getNamedItem("id").getTextContent());
        System.out.println(attributes.getNamedItem("label").getTextContent());
    }

关于java - 从 XPath 获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24222322/

相关文章:

java - jsoup 请求返回错误的状态代码

xml - XSLT 中需要什么来添加缺失的 XML 元素?

xml - 如何解析 XSLT 中 CDATA 元素内的 XML DOM?

xml - 如何使用xslt遍历xml

java - POJO 中的数据库表

java - CellUtil : Key type in createCell method

java - 在jsp中使用JSTL标签

c# - 从 aspx 网页读取 xml

java - JAXB - 如何定义映射类来生成节点文本值

jsf - 将元素 ID 与 JSF 动态 View ID 匹配