gpt4 book ai didi

java - 在 Java 中解析此 XML 的最简单方法?

转载 作者:行者123 更新时间:2023-11-29 08:05:14 25 4
gpt4 key购买 nike

我有以下 XML:

     <ConfigGroup Name="Replication">
<ValueInteger Name="ResponseTimeout">10</ValueInteger>
<ValueInteger Name="PingTimeout">2</ValueInteger>
<ValueInteger Name="ConnectionTimeout">10</ValueInteger>
<ConfigGroup Name="Pool">
<ConfigGroup Name="1">
<ValueString Encrypted="false" Name="Host">10.20.30.40</ValueString>
<ValueInteger Name="CacheReplicationPort">8899</ValueInteger>
<ValueInteger Name="RadiusPort">12050</ValueInteger>
<ValueInteger Name="OtherPort">4868</ValueInteger>
</ConfigGroup>
<ConfigGroup Name="2">
<ValueString Encrypted="false" Name="Host">10.20.30.50</ValueString>
<ValueInteger Name="CacheReplicationPort">8899</ValueInteger>
<ValueInteger Name="RadiusPort">12050</ValueInteger>
<ValueInteger Name="OtherPort">4868</ValueInteger>
</ConfigGroup>
</ConfigGroup>
</ConfigGroup>

我只是想知道在 Java 中解析此 XML 的最简单方法是什么 - 我想要来自两个主机元素的值(例如 10.20.30.40 和 10.20.30.50)。请注意,可能有两个以上的池条目(或根本没有)。

我找不到一个简单的例子来说明如何使用 Java 的各种 XML 解析器。

非常感谢任何帮助。

谢谢!

最佳答案

搜索所需内容的最简单方法是 XPath。

try {

//Load the XML File
DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
domFactory.setNamespaceAware(true);
DocumentBuilder builder = domFactory.newDocumentBuilder();
Document configuration = builder.parse("configs.xml");

//Create an XPath expression
XPathFactory xpathFactory = XPathFactory.newInstance();
XPath xpath = xpathFactory.newXPath();
XPathExpression expr = xpath.compile("//ConfigGroup/ValueString[@Name='Host']/text()");

//Execute the XPath query
Object result = expr.evaluate(configuration, XPathConstants.NODESET);
NodeList nodes = (NodeList) result;

//Parse the results
for (int i = 0; i < nodes.getLength(); i++) {
System.out.println(nodes.item(i).getNodeValue());
}
} catch (ParserConfigurationException e) {
System.out.println("Bad parser configuration");
e.printStackTrace();
} catch (SAXException e) {
System.out.println("SAX error loading the file.");
e.printStackTrace();
} catch (XPathExpressionException e) {
System.out.println("Bad XPath Expression");
e.printStackTrace();
} catch (IOException e) {
System.out.println("IO Error reading the file.");
e.printStackTrace();
}

XPath 表达式

"//ConfigGroup/ValueString[@Name='Host']/text()"

在您的 XML 中的任何位置查找 ConfigGroup 元素,然后在 ConfigGroup 元素中查找 ValueString 元素,这些元素的 Name 属性值为“Host”。 @Name=Host 类似于名称为 ValueString 的元素的过滤器。最后是text(),返回选中元素的文本节点。

关于java - 在 Java 中解析此 XML 的最简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11720999/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com