0

次のような XML ファイルがあります。

<book>
    <chapter name="chap1">
        <section name="c1sec1">
            <paragraph name="title1">sample</paragraph>
        </section>
        <section name="c1sec2">
            <paragraph name="title2">sample1</paragraph>
        </section>
    </chapter>
    <chapter name="chap2">
        <section name="c2sec1">
            <paragraph name="title3">sample2</paragraph>
        </section>
    </chapter>
    <chapter name="chap3">
        <section name="c3sec1">
            <paragraph name="title4">sample3</paragraph>
        </section>
    </chapter>
</book>

特定の章からセクションを抽出したい。「chap1」からの出力は次のようになります。

c1sec1
c1sec2

これを実現するために、次のコードを作成しました。

NodeList nodeList = doc.getElementsByTagName("chapter");
for (int i = 0; i < nodeList.getLength(); i++) {
    Node n = nodeList.item(i);
    NamedNodeMap m = n.getAttributes();
    if(m.getNamedItem("name").getTextContent() == "chap1")
    {
        System.out.println(n.getFirstChild().getNodeValue());
    }
}

どこが間違っていますか?

4

3 に答える 3

2

問題の根本的な原因は、等号ではなく == を使用して文字列を比較することです

于 2013-03-26T13:08:41.073 に答える
1

より簡単なgetAttribute()方法を使用することをお勧めします。

NodeList nodeList = doc.getElementsByTagName("chapter");
for (int i = 0; i < nodeList.getLength(); i++) {
    Element el = (Element)nodeList.item(i);
    if (el.getAttribute("name").equals("chap1"))
    {
        System.out.println("Found chap1");
    }
}

次に、章からセクション名を抽出するための同様のコードが必要になります。

于 2013-03-26T11:32:24.560 に答える
0

m.getNamedItem("name").getNodeValue()代わりに試してくださいm.getNamedItem("name").getTextContent()

于 2013-03-26T11:26:28.380 に答える