在java中读取XML的所有父节点

在java中读取XML的所有父节点,java,xml,dom,javax.xml,Java,Xml,Dom,Javax.xml,我有一个XML,如下所示: <parent> <child1> </child1> <child2> </child2> </parent> <parent> <child3> </child3> <child4> </child4> </parent> 我能够通过以下

我有一个XML,如下所示:

<parent>
     <child1>
     </child1>
     <child2>
     </child2>
</parent>
<parent>
     <child3>
     </child3>
     <child4>
     </child4>
</parent>

我能够通过以下代码读取第一个父节点的子节点值:

// Get the staff element by tag name directly
            Node PatientVariables = doc.getElementsByTagName("parent").item(0);

            // loop the staff child node
            NodeList patientlist = PatientVariables.getChildNodes();

            for (int i = 0; i < patientlist.getLength(); i++) {
                   Node node = patientlist.item(i);
                 if ("child1".equals(node.getNodeName())) {
                     PatientLastNameValue=node.getTextContent();
                    //System.out.println("The XML value:"+node.getTextContent() );
                   }
//直接按标记名获取staff元素
节点PatientVariables=doc.getElementsByTagName(“父”).item(0);
//循环staff子节点
NodeList patientlist=PatientVariables.getChildNodes();
for(int i=0;i

但是我无法读取第二个父节点值(child3和child4)

XML只允许一个根节点。请将“父”节点放在根节点下,如下所示:

<root>
    <parent>
    ...
    </parent>
    <parent>
    ...
    </parent>
</root>

...
...

然后在root的子节点上进行交互。

以及上面@Johannes的答案,这一行

Node PatientVariables = doc.getElementsByTagName("parent").item(0);
仅返回第一个
实例


您应该将
doc.getElementsByTagName(“父项”)
视为一个集合并对其进行迭代。

您需要遍历xml并将每个父项添加到一个数组中

Node [] PatientVariables = add.doc.getElementsByTagName("parent");
您需要循环父对象,并通过每个父对象的子对象进行嵌套循环

for( int i = 0; i< PatientVariables.length; i++){
  // loop the staff child node
  NodeList patientlist = PatientVariables[i].getChildNodes();

        for (int i = 0; i < patientlist.getLength(); i++) {
               Node node = patientlist.item(i);
        /.../
for(int i=0;i
这是一个基本的想法