我有一个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)
答案 0 :(得分:3)
XML仅允许一个根节点。将您的&#34; parent&#34; -nodes放在根节点下,如下所示:
<root>
<parent>
...
</parent>
<parent>
...
</parent>
</root>
然后对root的子节点进行交互。
答案 1 :(得分:1)
以及@Johannes上面的回答,这一行
Node PatientVariables = doc.getElementsByTagName("parent").item(0);
仅返回第一个<parent>...</parent>
实例。
您应该将doc.getElementsByTagName("parent")
视为一个集合并对其进行迭代。
答案 2 :(得分: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);
/.../
这是一个基本想法。