我正在尝试使用 DOM 解析来解析这个 XML:
<Hospitals>
<Hospital>
<name>Hospital1</name>
<tel-number>0272222222</tel-number>
</Hospital>
<Hospital>
<name>Hospital2</name>
<tel-number>0273333333</tel-number>
</Hospital>
<Hospital>
<name>Hospital3</name>
<tel-number>0270000000</tel-number>
</Hospital>
</Hospitals>
我正在使用此代码进行测试,只想获取第一家医院的名称:
public void viewXmlData(Document doc) {
Node na = doc.getElementsByTagName("Hospital").item(0);
NodeList nList1 = na.getChildNodes();
int index = getNodeIndex(nList1, "name");
Node nb = nList1.item(index);
NodeList nList2 = nb.getChildNodes();
String hospitalName = nList2.item(0).getTextContent();
Toast.makeText(MainActivity.this, hospitalName, Toast.LENGTH_LONG)
.show();
}
private int getNodeIndex(NodeList nList, String nodeName) {
for (int i = 0; i < nList.getLength(); i++) {
if (nList.item(i).getNodeName().equals(nodeName))
return i;
}
return -1;
}
这很好用。但我有两个问题:
1-为什么index
等于1而不是0,那么第一个节点是什么?
2-我为什么要创造nList2
?我以为我通过以下方式到达了确切的节点:Node nb = nList1.item(index);
我知道使用 Element 类会使事情变得更简单,但我仍然需要知道答案。