java - XML 搜索和解析

标签 java xml parsing

我有一个 XML 文件,我正在尝试使用 Java 进行搜索。我只需要通过标签名称找到一个元素,然后找到该标签的值。例如:

我有这个 XML 文件:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="https://company.com/test/xslt/processing_report.xslt"?>
<Certificate xmlns="urn:us:net:exchangenetwork:Company">
  <Value1>Veggie</Value1>
  <Value2>Fruits</Value2>
    <type1>Apple</type1>
       <FindME>Red</FindME>
  <Value3>Bread</Value3>
</Certificate>

我想找到 FindME 标签内的值。我不能使用 XPath,因为不同的文件可以有不同的结构,但它们总是有一个 FindME 标签。最后我正在寻找最简单的代码,我不太关心性能。谢谢

最佳答案

代码如下:

    XPathFactory f = XPathFactory.newInstance();
    XPathExpression expr = f.newXPath().compile(
            "//*[local-name() = 'FindME']/text()");
    DocumentBuilderFactory domFactory = DocumentBuilderFactory
            .newInstance();
    domFactory.setNamespaceAware(true);
    DocumentBuilder builder = domFactory.newDocumentBuilder();
    Document doc = builder.parse("src/test.xml"); //your XML file

    Object result = expr.evaluate(doc, XPathConstants.NODESET);
    NodeList nodes = (NodeList) result;
    System.out.println(nodes.getLength());
    for (int i = 0; i < nodes.getLength(); i++) {
        System.out.println(nodes.item(i).getNodeValue());
    }

解释:

//* - 匹配任何元素节点 - 无论它们在哪里

local-name() = 'FindME' - 其中本地名称 - 即;不是完整路径 - 匹配“FindME”

text() - 获取节点值。

关于java - XML 搜索和解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4924697/

相关文章:

java - JSF 1.2、Richfaces 3.X 和 Jboss 服务器 5.0 : After Adding Richfaces JAR it's giving Error

xml - 在 Delphi 中使用 XML(将特定数据返回给变量)

用于解析大致日期的 C 库

javascript - 为什么 '+' 在从字符串转换为 float 或整数时像 javascript 中的解析一样,以及它在性能方面有何不同?

java - 从在 gitlab CI 中不起作用的资源读取文件

java - 执行 mvn eclipse :eclipse 后我的源文件夹被删除

java - 正则表达式替换为 Stream

c# - 更新 XML 文件 c#

ios - NSXMLParser 解析器 :parseErrorOccurred: not called on iOS 7

iphone - IOS 5内置的用于JSON解析的API可以在低版本手机上使用吗?