gpt4 book ai didi

java - DOM XML - 如何获取子节点?

转载 作者:行者123 更新时间:2023-12-01 13:38:04 24 4
gpt4 key购买 nike

我有这样的 xml:

<param>
<name>some_list</name>
<value>
<items>
<item>
<value>7</value>
<type>Long</type>
</item>
<item>
<value>23</value>
<type>String</type>
</item>
<item>
<value>1.0</value>
<type>Double</type>
</item>
<item>
<value>true</value>
<type>Boolean</type>
</item>
<item>
<value>13-01-2014 16:03:50</value>
<type>Date</type>
</item>
<item>
<value>[7, false]</value>
<type>String</type>
</item>
</items>
</value>
<type>Collection</type>
</param>

我需要获取type节点的值 - 子param节点(在本例中为“Collection”)。我对 item 节点的子节点不感兴趣,所以解决方案如下:

NodeList nodes = element.getElementsByTagName("type").item(0).getChildNodes();
Node node = (Node) nodes.item(0);
return node.getNodeValue();

错误(它返回“Long”,而不是“Collection”!)

最佳答案

getElementsByTagName 返回所有后代元素。您只需要所有直接元素。

您可以使用getChildNodes(),然后根据需要过滤它们。例如:

NodeList children = element.getChildNodes();
for (int i = 0; i < children.getLength(); i++) {
Node node = children.item(i);
if (node.getNodeType() == Node.ELEMENT_TYPE
&& node.getLocalName().equals("type")) {
// Use the node, get its value etc
}
}

您可能还想考虑使用 XPath 或替代 Java XML API(例如 JDOM )来简化此操作。如果您经常执行上述操作,您可能希望将其提取到辅助方法以返回具有特定元素名称(或仅第一个)的所有直接子级。

关于java - DOM XML - 如何获取子节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21096433/

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