我有一个像这样的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());
}
}
我哪里错了?
答案 0 :(得分:2)
问题的根本原因是使用==来比较字符串而不是等于
答案 1 :(得分: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");
}
}
然后,您需要使用类似的代码从章节中提取部分名称。
答案 2 :(得分:0)
尝试使用m.getNamedItem("name").getNodeValue()
代替m.getNamedItem("name").getTextContent()