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 回答