Pull解析
import java.io.IOException;
import java.util.ArrayList;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import android.app.Activity;
import android.os.Bundle;
import android.util.Xml;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
/**
* 原理 sax ,以事件作为驱动进行文档的解析 handler —>startDocument() startElement(); end …
* characters();
*
* pull 类似 eventType,事件类型———判断事件类型,根据不同的事件做相应的操作
*
*
* json json xml 优缺点: 优点 缺点 1.xml 扩展性好,xml可以包含json 结构复杂,解析麻烦 2.json 结构简单,解析简单
* 扩展性查差
*
* 百度地图离线 地图体积比较大。–》地图格式改变,地图体积变小了
*
* @author Administrator
*
*/
public class MainActivity extends Activity {
private ArrayList list = null;
private Person person = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button parse = (Button) findViewById(R.id.parse);
parse.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
/**
* 1.factory 2.解析者 3.解析
*/
XmlPullParser pullParser = Xml.newPullParser();// 获取解析者
// pullParser.setInput(inputStream--输入流, inputEncoding--输入流的编码);
try {
pullParser
.setInput(getAssets().open("source.xml"), "UTF-8");
// 实例化集合
list = new ArrayList<Person>();
// 获取事件类型
int eventType = pullParser.getEventType();
// 判断事件类型
// 如果文档没有结束,就要一直解析
while (eventType != XmlPullParser.END_DOCUMENT) {
//
switch (eventType) {
// 判断节点名字
case XmlPullParser.START_TAG:
// 获取节点名字
String startTagName = pullParser.getName();
if (startTagName.equals("person")) {
// 实例化person对象
person = new Person();
// 设置属性
person.setId(pullParser.getAttributeValue(null,
"id"));
} else if (startTagName.equals("name")) {
person.setName(pullParser.nextText());
} else if (startTagName.equals("age")) {
person.setAge(pullParser.nextText());
}
break;
case XmlPullParser.END_TAG:
// 获取节点名字
String endTagName = pullParser.getName();
if (endTagName.equals("person")) {
list.add(person);
}
break;
default:
break;
}
// 事件往下移动
eventType = pullParser.next();
}
// 展示
for (int i = 0; i < list.size(); i++) {
System.out.println("zhanghi----->"
+ list.get(i).getName());
}
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
}