Java DOM XML-如何获取子节点?
我有这样的xml:Java DOM XML-如何获取子节点?,java,xml,Java,Xml,我有这样的xml: <param> <name>some_list</name> <value> <items> <item> <value>7</value> <type>Long</type> </item> <item> <value>2
<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>
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
}
}
nodelistchildren=element.getChildNodes();
for(int i=0;i
您可能还需要考虑使用XPath或其他JavaXMLAPI(例如)来简化这一过程。如果您经常执行上述操作,您可能希望将其提取到一个helper方法,以返回具有特定元素名称(或仅第一个元素名称)的所有直接子元素。Long是第一个元素上按类型标记的值,例如item(0)为什么您希望它是String?我希望它是“Collection”-比“param”节点低一个lvl。