我有一个 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/