0

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- index0 ではなく 1 に等しいのはなぜですか。最初のノードは何ですか?

2- なぜ私は作成しなければならなかったのnList2ですか? 次の方法で正確なノードに到達したと思いました。Node nb = nList1.item(index);

Element クラスを使用すると物事が簡単になることはわかっていますが、それでも答えを知る必要があります。

4

1 に答える 1