zoukankan      html  css  js  c++  java
  • 每日日报

    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);
    
    }
    
    }
    
    }
  • 相关阅读:
    人与人之间的本质
    如何让百度搜索不到
    js.prototype最深刻的理解
    调用函数不能用&
    浏览器的缓存就是关闭了浏览器任然存在
    Spring switch的使用
    thymeleaf如何遍历数据 each循环的使用
    spring 机制 扫描包
    Spring分层次建包
    如何使用thymeleaf显示控制传递过来的数据
  • 原文地址:https://www.cnblogs.com/zhukaile/p/14833170.html
Copyright © 2011-2022 走看看