每日日报

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);

}

}

}

 

posted @ 2021-03-12 16:31  durtime  阅读(43)  评论(0)    收藏  举报