gpt4 book ai didi

Java解析XML : getElementsByTagName returns all elements

转载 作者:行者123 更新时间:2023-11-30 02:14:55 25 4
gpt4 key购买 nike

我有以下 xml 结构:

<node name="node1">
<parameter name="param1" value="1" />
<parameter name="param2" value="2" />
<parameter name="param3" value="3" />

<option name="opt1">
<parameter name="opt1-p1" value="11" />
<parameter name="opt1-p2" value="12"/>
<parameter name="opt1-p3" value="13"/>
</option>
</node>
...

该文件包含多个带有多个选项的节点元素。

使用语句 getElementsByTagName

       ...
Node nNode = nodeListSessions.item(nodeIndex);
Element nodeElements = (Element) nNode;
NodeList nodeListParameters = nodeElements .getElementsByTagName("parameter");
...

它获取所有参数,包括来自选项内部元素的参数。

如何在节点列表(nodeListParameters)中仅接收节点元素的参数?

最佳答案

一种选择是使用简单的 XPath表达式:/node/parameter

这只会获取根级节点元素中的参数元素。您可以使用 java.xml.xpath 中提供的 XPath 类,如下所示:

XPathFactory xPathfactory = XPathFactory.newInstance();
XPath xpath = xPathfactory.newXPath();
XPathExpression expr = xpath.compile("/node/parameter");

NodeList nodeListParameters = (NodeList) expr.evaluate(doc, XPathConstants.NODESET);

您需要将 XML doc 作为某种 InputSource对象,例如 org.w3c.dom.Document 。请参阅this answer了解更多详情。

您可以尝试并测试不同的 xpath 查询 here .

关于Java解析XML : getElementsByTagName returns all elements,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48883578/

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