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;
}
それはうまくいきます。しかし、2 つの質問があります。
1- index
0 ではなく 1 に等しいのはなぜですか。最初のノードは何ですか?
2- なぜ私は作成しなければならなかったのnList2
ですか? 次の方法で正確なノードに到達したと思いました。Node nb = nList1.item(index);
Element クラスを使用すると物事が簡単になることはわかっていますが、それでも答えを知る必要があります。