Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java DOM XML-如何获取子节点?_Java_Xml - Fatal编程技术网

Java DOM 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

我有这样的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>
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。