java xml 空指针异常困惑了几天了?求解决~

package itat.org.xml;

import java.util.ArrayList;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class TestXML04 {
public static void main(String[]ages){
try {
SAXReader reader = new SAXReader();
Document d = reader.read(TestXML04.class.getClassLoader().getResource("xml/books.xml"));//获取类路径名的文件夹
Element root = d.getRootElement();//获得根元素
Element e = findByTitle(d, "java编程思想");
System.out.println(e.elementText("price"));
} catch (DocumentException e) {
e.printStackTrace();
}
}
private static Element findByTitle(Document d,String title){
Element root = d.getRootElement();
List eles = root.elements("book");
for(Element e:eles){
String t = e.elementTextTrim("title");//获得返回的一个去掉空格的元素文本(title)
if(t.equals(title)){//比较传进来的title和获得的
return e;
}
}
return null;
}
private static void tran(){
SAXReader reader = new SAXReader();
try {
Document d = reader.read(TestXML04.class.getClassLoader().getResource("xml/books.xml"));//获取类路径名的文件夹
Element root = d.getRootElement();//获得根元素
List eles = root.elements("book");//获得返回的一个元素的集合
List books = new ArrayList();//新建一个Book集合
for(Element e:eles){//遍历Element集合中所以元素
Book b = new Book();//新建一个Book
b.setId(Integer.parseInt(e.attributeValue("id")));//遍历出来的元素id的值包装拆箱成int类型set给Book
b.setTitle(e.elementText("title"));
b.setAuthor(e.elementText("author"));
b.setPrice(Double.parseDouble(e.elementText("price")));
}
for(Book b:books){
System.out.println(b);
}

    } catch (DocumentException e) {
        e.printStackTrace();

    }

}

}


<?xml version="1.0" encoding="UTF-8"?>


java编程思想
Brucre Eckel
89.00


C++编程思想
Brucre Eckel
69.00


headfirst in java
Orelly
79.00


图片说明

错误在main函数的15行,e是null说明没解析到,xml文件格式是怎样的?

我怀疑你没有解析到这个软件吧!

查看一下d是否空,是不是文件就没有读进来

找到15行,打个断点调试一下