慕课网——JDOM解析XML

来源:互联网 发布:商品期货交易软件下载 编辑:程序博客网 时间:2024/04/29 13:01
//需要导入JDOM包包
public class JDOMTest {private static ArrayList<Book> bookArrayList = new ArrayList<Book>();public static void main(String[] args) {// 进行对book.xml文件解析// 1. 创建一个SAXBuilder对象SAXBuilder saxBuilder = new SAXBuilder();// 2.创建一个输入流,将xml文件加载到输入流中InputStream in;try {// 这里将book.xml拖入名为res的Folderin = new FileInputStream("src/res/books.xml");// 编码问题InputStreamReader isr = new InputStreamReader(in, "utf-8");// 3. 通过saxBuilder的builder方法,将输入流加载在saxBuilder中// !!!这里加载com.jdom2包包Document document = saxBuilder.build(isr);// 4.通过document对象获取xml文件的根节点Element rootElement = document.getRootElement();// 5.获取根节点的子节点的List集合// 这个是导入util包包List<Element> bookList = rootElement.getChildren();// 使用foreach方式继续解析,如果想要通过普通for解析,这里有个size()方法int bookNumber = 0;for (Element book : bookList) {Book bookEntity = new Book();System.out.println("========开始解析第"+ (bookList.indexOf(book) + 1) + "书========");// 解析book属性List<Attribute> attrList = book.getAttributes();// 知道节点下面属性名称时候,可以获取属性值// book.getAttributeValue("id");// 遍历attrList(针对不清楚book节点下面属性的名字和数量)for (Attribute attr : attrList) {// 不会保留含有空行的文本// 获取属性名String attrName = attr.getName();// 获取属性值String attrValue = attr.getValue();System.out.println("属性名: " + attrName + "---属性值: "+ attrValue);if (attrName.equals("id")) {bookEntity.setId(attrValue);}}// 对book节点的子节点的节点名和节点值的遍历// jdom下面都含有getchildren()方法List<Element> bookChildren = book.getChildren();for (Element child : bookChildren) {System.out.println("节点名: " + child.getName() + "----节点值: "+ child.getValue());if (child.getName().equals("name")) {bookEntity.setName(child.getValue());} else if (child.getName().equals("author")) {bookEntity.setAuthor(child.getValue());} else if (child.getName().equals("year")) {bookEntity.setYear(child.getValue());} else if (child.getName().equals("price")) {bookEntity.setPrice(child.getValue());} else if (child.getName().equals("language")) {bookEntity.setLanguage("language");}}System.out.println("========结束解析第"+ (bookList.indexOf(book) + 1) + "书========");bookArrayList.add(bookEntity);bookEntity = null;// 这里没有做遍历,简单测试一下System.out.println("这是列表里的第" + bookArrayList.size() + "本书");System.out.println("该节点的id是: " + bookArrayList.get(bookNumber).getId());System.out.println("它的书名是: " + bookArrayList.get(bookNumber).getName());bookNumber++;}} catch (FileNotFoundException e) {e.printStackTrace();} catch (JDOMException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}

0 0
原创粉丝点击