求大神指出問題?
package xmldemo;
import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class TestXml {
public static void main(String[] args) {
//創建一個DocumentBuilderFactory的對象
DocumentBuilderFactory dbf= DocumentBuilderFactory.newInstance();
Document document;
try {
DocumentBuilder db=dbf.newDocumentBuilder();
document = db.parse("books.xml");
NodeList booklist= ?document.getElementsByTagName("book");
for(int i =0;i<booklist.getLength();i++){
System.out.println("==========下面開始遍歷第"+(i+1)+"本書============");
Node book= booklist.item(i);
NamedNodeMap attrs=book.getAttributes();
for (int j = 0; j <attrs.getLength() ; j++) {
Node attr=attrs.item(j);
System.out.print("屬性名: "+attr.getNodeName());
System.out.println("----屬性值: "+attr.getNodeValue());
?
NodeList list=book.getChildNodes();
System.out.println("第"+(i+1)+"本書的"+"共有 "+list.getLength()+"個子節點 ");
?
for (int n = 0; n <list.getLength(); n++) {
Node node=list.item(j);
System.out.println(node.getNodeName());
}
}?
?
System.out.println("==========完成遍歷第"+(i+1)+"本書============");
}
} catch (ParserConfigurationException e) {
// TODO 自動生成的 catch 塊
e.printStackTrace();
} catch (SAXException e) {
// TODO 自動生成的 catch 塊
e.printStackTrace();
} catch (IOException e) {
// TODO 自動生成的 catch 塊
e.printStackTrace();
}
}
}
結果
==========下面開始遍歷第1本書============
屬性名: id----屬性值: 1
第1本書的共有 9個子節點?
#text
#text
#text
#text
#text
#text
#text
#text
#text
==========完成遍歷第1本書============
==========下面開始遍歷第2本書============
屬性名: id----屬性值: 2
第2本書的共有 9個子節點?
#text
#text
#text
#text
#text
#text
#text
#text
#text
==========完成遍歷第2本書============
2018-02-02
樓上正解,你的循環變量寫錯了。
2016-08-29
第二個for循環里的“Node node=list.item(j);”寫錯了,把 j 改成 n