为了账号安全,请及时绑定邮箱和手机立即绑定

求大神指出问题?

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本書============


正在回答

2 回答

楼上正解,你的循环变量写错了。

0 回复 有任何疑惑可以回复我~
#1

丑丶小亚

说了多少遍了,新手别复制代码,手打好吗?好吗?好吗?好吧,爱打不打。
2018-02-02 回复 有任何疑惑可以回复我~

第二个for循环里的“Node node=list.item(j);”写错了,把 j 改成 n

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

求大神指出问题?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信