使用 java 和 Xpath 获取 xml 的所有属性

阿肖克·N

我有以下xml:

<?xml version="1.0" encoding="UTF-8"?>
<root xmlns="http://www.test.com/rest/v1" xmlns:xs="http://www.w3.org/2001/XMLSchema">
   <child test="folder" id="2019-05-15-04.52.05.641880A01" />
   <child test="folder" id="2019-05-15-04.52.05.901880A02" />
</root>

我想通过使用 Java 代码和 Xpath 读取上面的 xml,检索子节点(即id="2019-05-15-04.52.05.641880A01" and id="2019-05-15-04.52.05.901880A02"的 id并将它们存储到列表中。我尝试使用以下 java 代码:

        InputSource source = new InputSource(new StringReader(xml));
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder();
        org.w3c.dom.Document document = db.parse(source);
        XPathFactory xpathFactory = XPathFactory.newInstance();
        XPath xpath = xpathFactory.newXPath();
        return xpath.evaluate(expression, document);

我使用以下 Xpath 和输入 xml 调用了上述方法:

*[local-name()='root']/*[local-name()='child']/@id

但我只得到一个id,而不是所有的 id。关于如何获取所有 ID 的任何想法?

维比

我认为您的 Xpath 是正确的。您可以使用以下测试类进行验证。

package com.idsk.commons.xsl;

import java.io.IOException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;

import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class Test {

    public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException, XPathExpressionException {
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        factory.setNamespaceAware(true); // never forget this!
        DocumentBuilder builder = factory.newDocumentBuilder();
        Document doc = builder.parse("D://NewFile.xml");

        // Create XPath
        XPathFactory xpathfactory = XPathFactory.newInstance();
        XPath xpath = xpathfactory.newXPath();

        XPathExpression expr = xpath.compile("*[local-name()='root']/*[local-name()='child']/@id"); 

        Object result = expr.evaluate(doc, XPathConstants.NODESET);
        NodeList nodes = (NodeList) result;

        List<String> ids = new ArrayList<>();
        for (int i = 0; i < nodes.getLength(); i++) {
            System.out.println(nodes.item(i).getNodeValue());
            ids.add(nodes.item(i).getNodeValue()); //store them into List
        }
    }
}

它将创建以下输出:

2019-05-15-04.52.05.641880A01

2019-05-15-04.52.05.901880A02

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用属性获取XML树中所有节点的xpath-Python

来自分类Dev

使用SQL XPATH查询获取XML元素名称和属性值

来自分类Dev

使用Rails Nokogiri XPath解析XML工作表以获取属性和元素

来自分类Dev

使用xpath从xml获取价值

来自分类Dev

如何使用python获取具有默认名称空间的xml文件中所有元素的xpath?

来自分类Dev

如何使用python获取具有默认名称空间的xml文件中所有元素的xpath?

来自分类Dev

如何使用Go获取XML元素的所有属性?

来自分类Dev

使用XSLT和参数从XML获取属性

来自分类Dev

Java XPath获取具有特定标签和特定文本匹配的所有节点

来自分类Dev

如何使用XPath获取XML中的所有后代文本内容

来自分类Dev

使用linq或xpath获取xml中的所有文本节点

来自分类Dev

如何使用xmllint xpath获取具有相同标签名称的所有属性

来自分类Dev

使用带有ns的标签和属性的python xml xpath查询

来自分类Dev

如何在Java中使用XPath获取属性值?

来自分类Dev

如何获取所有节点的名称和xml中xml的属性?

来自分类Dev

如何在Java中使用xpath从特定属性中选择所有属性值

来自分类Dev

XPath使用从XML获取数据-Pentaho

来自分类Dev

使用xpath获取xml元素值

来自分类Dev

使用xpath获取相应的XML节点

来自分类Dev

PHP注意:尝试在PHP中使用xpath查询获取XML过滤时获取非对象的属性

来自分类Dev

从xml文件中获取数据并使用Ajax和xpath在html表中显示

来自分类Dev

使用Oracle XML DB向与XPATH表达式匹配的所有节点添加属性

来自分类Dev

Xpath使用获取属性值

来自分类Dev

使用Scrapy获取XPath属性

来自分类Dev

使用xpath获取src属性

来自分类Dev

使用Groovy在SoapUI中使用Xpath查询在XML节点中使用xsi获取属性值

来自分类Dev

如何使用 lxml/xpath 在 XML 导出中找到所有带有 IMG 标签的指南 ID 和页面?

来自分类Dev

XPath:获取具有位置和属性的元素

来自分类Dev

使用 Java Xml Parser 获取具有 required 属性的 XML 元素

Related 相关文章

  1. 1

    使用属性获取XML树中所有节点的xpath-Python

  2. 2

    使用SQL XPATH查询获取XML元素名称和属性值

  3. 3

    使用Rails Nokogiri XPath解析XML工作表以获取属性和元素

  4. 4

    使用xpath从xml获取价值

  5. 5

    如何使用python获取具有默认名称空间的xml文件中所有元素的xpath?

  6. 6

    如何使用python获取具有默认名称空间的xml文件中所有元素的xpath?

  7. 7

    如何使用Go获取XML元素的所有属性?

  8. 8

    使用XSLT和参数从XML获取属性

  9. 9

    Java XPath获取具有特定标签和特定文本匹配的所有节点

  10. 10

    如何使用XPath获取XML中的所有后代文本内容

  11. 11

    使用linq或xpath获取xml中的所有文本节点

  12. 12

    如何使用xmllint xpath获取具有相同标签名称的所有属性

  13. 13

    使用带有ns的标签和属性的python xml xpath查询

  14. 14

    如何在Java中使用XPath获取属性值?

  15. 15

    如何获取所有节点的名称和xml中xml的属性?

  16. 16

    如何在Java中使用xpath从特定属性中选择所有属性值

  17. 17

    XPath使用从XML获取数据-Pentaho

  18. 18

    使用xpath获取xml元素值

  19. 19

    使用xpath获取相应的XML节点

  20. 20

    PHP注意:尝试在PHP中使用xpath查询获取XML过滤时获取非对象的属性

  21. 21

    从xml文件中获取数据并使用Ajax和xpath在html表中显示

  22. 22

    使用Oracle XML DB向与XPATH表达式匹配的所有节点添加属性

  23. 23

    Xpath使用获取属性值

  24. 24

    使用Scrapy获取XPath属性

  25. 25

    使用xpath获取src属性

  26. 26

    使用Groovy在SoapUI中使用Xpath查询在XML节点中使用xsi获取属性值

  27. 27

    如何使用 lxml/xpath 在 XML 导出中找到所有带有 IMG 标签的指南 ID 和页面?

  28. 28

    XPath:获取具有位置和属性的元素

  29. 29

    使用 Java Xml Parser 获取具有 required 属性的 XML 元素

热门标签

归档