2

我有一个如下的 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() );
                   }

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

4

3 回答 3

3

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

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

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

于 2015-09-09T08:58:01.267 回答
1

除了上面@Johannes 的回答,这一行

Node PatientVariables = doc.getElementsByTagName("parent").item(0);

仅返回第一个<parent>...</parent>实例。

您应该将doc.getElementsByTagName("parent")其视为一个集合并对其进行迭代。

于 2015-09-09T09:00:19.930 回答
1

您需要通过 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);
        /.../

这是一个基本的想法。

于 2015-09-09T09:04:01.583 回答