java - 从解析的 XML 文档返回 NodeList 的字符串值

标签 java xml xpath nodelist

给定 xml 片段:

<AddedExtras>
    <AddedExtra Code="1234|ABCD" Quantity="1" Supplier="BDA"/>
    <AddedExtra Code="5678|EFGH" Quantity="1" Supplier="BDA"/>
    <AddedExtra Code="9111|ZXYW" Quantity="1" Supplier="BDA"/>
    <AddedExtra Code="9188|ZXYF" Quantity="1" Supplier="BDA"/>
    <AddedExtra Code="9199|ZXYG" Quantity="1" Supplier="BDA"/>
</AddedExtras>

以下代码片段将上述 xml 作为已解析的文档读取,并使用 xpath 表达式提取“Code”属性:

public String getNodeValuesFromNodeList(Document doc, String expression){

NodeList nodeList = null;
    try {
        nodeList = (NodeList) xpath.compile(expression).evaluate(doc, XPathConstants.NODESET);
    } catch (XPathExpressionException e) {
        e.printStackTrace();
    }

    return nodeList.toString();
}

返回的列表是一个对象 (org.apache.xml.dtm.ref.DTMNodeList@58cf8f94),而不是字符串列表 - 如何返回 nodeList,以便它返回以下字符串列表:

    Code="1234|ABCD
    Code="5678|EFGH
    Code="9111|ZXYW
    Code="9188|ZXYF
    Code="9199|ZXYG

那么,如何只返回前 2 个(作为示例)?

最佳答案

如果您的 XPath 表达式选择属性,并且您想要属性的值,则可以使用类似于以下内容的循环:

    List<String> codes = new ArrayList<>();
    for (int i = 0; i < nodeList.getLength(); ++i) {
        Attr attr = (Attr)nodeList.item(i);
        codes.add(attr.getValue());
    }

关于java - 从解析的 XML 文档返回 NodeList 的字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40958736/

相关文章:

java - 在java中格式化包含日期的字符串时出现问题

java - 是否可以使用 Mojo 的 Hibernate 插件生成带注释的 Java 类?

xml - XPath 查找元素中最后一个文本节点

c# - 如何反序列化子项直接位于根目录中的对象列表

sql-server - 选择子节点直到 xpath 中的属性值(SQL Server)

java.lang.IllegalStateException : Fragment already added :

java - Future中的get方法在java中是如何工作的?

php - 使用 gzuncompress() 解码 xml 输出 : data error in

python - 如何使用 lxml 获取斜体和非斜体文本

java - 开始使用 XPath