老师,这里为什么会有空指针异常。。

来源:2-2 使用 DOM 解析 XML 文件的属性名和属性值

是王小二呀

2015-12-31 12:10

package test_XML;

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 DOM_XML_Test {
	public static void main(String[] args){
	
		try {
			DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
	
			DocumentBuilder db =dbf.newDocumentBuilder();

				
				Document document = db.parse("book.xml");
				NodeList bookList = document.getElementsByTagName("book");
				System.out.println("咱们书店共有"+bookList.getLength()+"本书");
				for(int i=0;i<bookList.getLength();i++){
					System.out.println("下面开始遍历第"+(i+1)+"本书的内容");

					Node book = bookList.item(i);

					NamedNodeMap attributes=book.getAttributes();
					System.out.println("第"+(i+1)+"本书共有"+attributes.getLength()+"个属性");
					for(int j=0; i<attributes.getLength();j++){
						Node attr = attributes.item(j);
						System.out.print("属性名"+attr.getNodeName());
						System.out.print("属性值"+(String)attr.getNodeValue());
					}
				}
				
				} catch (SAXException e) {
					e.printStackTrace();
				} catch (IOException e) {
					e.printStackTrace();
				} catch (ParserConfigurationException e) {
			e.printStackTrace();
		}
	}
}

找半天没看明白怎么就有空指针异常了呢?

写回答 关注

3回答

  • barry_wang
    2015-12-31 12:53:29
    已采纳

    打断点调试一下,是不是bookList就是空的

    是王小二呀

    已解决; 问题出在这里:for(int j=0; i<attributes.getLength();j++)其中j没有终止条件,一直运行在++这句,使得到不了打印那条语句,所以成了空指针异常。 不过还是谢谢哥们儿!

    2016-01-01 20:50:54

    共 2 条回复 >

  • 是王小二呀
    2015-12-31 20:37:33
    <?xml version="1.0"encoding="UTF-8"?>
    <bookstore>
    	<book id="1">
    		<name>冰与火之歌</name>
    		<author>乔治马丁</author>
    		<year>2014</year>
    		<price>22</price>
    	</book>
    	<book id="2">
    		<name>飘</name>
    		<author>米切尔</author>
    		<price>99</price>
    		<language>English</language>
    	</book>
    
    </bookstore>


  • 是王小二呀
    2015-12-31 12:12:41

    就在哪个get属性名和属性值的地方  提示有空指针异常  没明白。。。

Java眼中的XML---文件读取

通过Java认识并且创造XML文件,如何应用 Java“解析 XML

83199 学习 · 431 问题

查看课程

相似问题