1. PULL解析
解析速度快,事件处理,不会预加载整个文档
[java] view plain copy
package com.lei.xml;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.List;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlSerializer;
import android.util.Xml;
public class PullParse implements XMLParser {
public static PullParse getInstance() {
return new PullParse();
}
public <T> List<T> xmlParse(InputStream is) {
List<Book> list = null;
Book book = null;
XmlPullParser parser = Xml.newPullParser();
// XmlPullParser parser =
// XmlPullParserFactory.newInstance().newPullParser();
try {
parser.setInput(is, "utf-8");
int type = parser.getEventType();
while (type != XmlPullParser.END_DOCUMENT) {//整个xml结束标签,出口
switch (type) {
case XmlPullParser.START_DOCUMENT://整个xml开始标签,入口
list = new ArrayList<Book>();
break;
case XmlPullParser.START_TAG://子开始标签
if (parser.getName().equals("book")) {
book = new Book();
} else if (parser.getName().equals("id")) {
type = parser.next();
book.setId(Integer.parseInt(parser.getText()));
} else if (parser.getName().equals("name")) {
type = parser.next();
book.setName(parser.getText());
}
break;
case XmlPullParser.END_TAG://子结束标签
if (parser.getName().equals("book")) {
list.add(book);
}
break;
}
type = parser.next();
}
} catch (XmlPullParserException e) {
e.printStackTrace();
} catc