package xml;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import org.jdom.Attribute;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
/*
* JDOM是第三方提供的解析XML方法,需要jdom-2.0.5.jar包
*/
public class JDOM解析XML {
private static List<Book> bookList = new ArrayList<Book>();
public static void main(String[] args) {
//创建SAXBuilder对象
SAXBuilder saxBuilder = new SAXBuilder();
InputStream in;
try {
//创建一个输入流,加载xml文件
in = new FileInputStream("books.xml");
InputStreamReader isr = new InputStreamReader(in,"UTF-8");
//通过saxBuilder方法,将输入流加载到saxBuilder中
Document document = saxBuilder.build(isr);
//获取xml文件根节点
Element root = document.getRootElement();
System.out.println(root.getName());
//获取根节点下的子节点的List集合
List<Element> bookList = root.getChildren();
for(Element book:bookList) {
Book bookBean = new Book();
System.out.println("===========第"+(bookList.indexOf(book)+1)+"记录内容==========");
//解析book的属性集合
List<Attribute> attributes = book.getAttributes();
//遍历属性值名称
for(Attribute attribute:attributes) {
String attrName = attribute.getName();
String attrValue = attribute.getValue();
System.out.println("属性名="+attrName+"\t"+"属性值="+attrValue);
if (attrName.equals("id")) {
bookBean.setId(attrValue);
}
}
//对节点的子节点进行遍历
List<Element> bookChild = book.getChildren();
for(Element child:bookChild) {
System.out.println("节点名="+child.getName()+"\t"+"值="+child.getValue());
if (child.getName().equals("name")) {
bookBean.setName(child.getValue());
}else if (child.getName().equals("author")) {
bookBean.setAuthor(child.getValue());
}else if (child.getName().equals("year")) {
bookBean.setYear(child.getValue());
}else if (child.getName().equals("price")) {
bookBean.setPrice(child.getValue());
}else if (child.getName().equals("language")) {
bookBean.setLanguage(child.getValue());
}
}
JDOM解析XML.bookList.add(bookBean);
bookBean = null;
//测试数据
System.out.println(JDOM解析XML.bookList.size());
System.out.println(JDOM解析XML.bookList.get(0).getId());
System.out.println(JDOM解析XML.bookList.get(0).getName());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}