pull 解析 ☆☆☆☆☆
调用next方法 解析下一个元素 每调用一次 解析一个元素
public class PullParserTest { @Test public void pullTest() throws Exception { ArrayList<Book> books = null; Book book = null; // 获取工厂 XmlPullParserFactory parserFactory = XmlPullParserFactory.newInstance(); // 获取到xml的解析器 XmlPullParser parser = parserFactory.newPullParser(); // 给解析器设置一个输入源 // 第一个参数输入流 第二个参数 文档用到的字符编码集 parser.setInput(new FileInputStream(new File("book.xml")), "utf-8"); // 获取当前事件类型 int eventType = parser.getEventType(); boolean flag = true; while (eventType != XmlPullParser.END_DOCUMENT && flag) { switch (eventType) { case XmlPullParser.START_TAG: //开始标签 //parser.getName 获取当前事件对应的元素名字 if("书架".equals(parser.getName())){ //创建一个集合 books = new ArrayList<>(); }else if("书".equals(parser.getName())){ //创建一个book 对象 book = new Book(); }else if("书名".equals(parser.getName())){ //给book 对象设置书名的属性 book.setTitle(parser.nextText()); //parser.nextText()获取当前节点的下一个文本内容 }else if("作者".equals(parser.getName())){ //给book 对象设置作者的属性 book.setAuthor(parser.nextText()); }else if("售价".equals(parser.getName())){ //给book 对象设置售价的属性 book.setPrice(parser.nextText()); } break; case XmlPullParser.END_TAG: //结束标签 if("书".equals(parser.getName())){ //把book 对象添加到集合中 books.add(book); flag = false; } break; } // 调用parser.next方法解析下一个元素 用这个结果来更新eventType 如果解析到文档结束那么就会推出循环 // 如果不更新这个eventType 就是死循环 eventType = parser.next(); } //遍历集合 for(Book book1:books){ System.out.println(book1); } } }