Pull方式解析XML文件
来源:互联网 发布:讲解spring源码的书籍 编辑:程序博客网 时间:2024/05/22 11:36
/////////////////////////////////////////////Xml文件///////////////////////////////////////////////////////////////////
<persons>
<person id="23" >
<age>30</age>
<name>lee</name>
<address>
<addr>
<area>海淀</area>
<detail>八维7栋110</detail>
</addr>
<addr>
<area>西城</area>
<detail>天安门112</detail>
</addr>
</address>
</person>
<person id="20" >
<name>leo</name>
<age>24</age>
<address>
<addr>
<area>海淀</area>
<detail>八维7栋111</detail>
</addr>
<addr>
<area>西城</area>
<detail>天安门111</detail>
</addr>
</address>
</person>
</persons>
//////////////////////////////////////////////////Person类//////////////////////////////////////////////////////////////
public class Person {
private int id;
private String name;
private int age;
private List<Addr> address;
}
///////////////////////////////////////////Pull解析过程/////////////////////////////////////////////////////////////////////
ListView listView=(ListView) findViewById(R.id.listView);
try {//InputStream fis = getAssets().open("/aaa/persons3.xml");
FileInputStream fis=new FileInputStream("/mnt/sdcard/persons3.xml");
List<Person> list = XmlPullParserPerson(fis);
//给listView设置适配器
listView.setAdapter(new MyAdapter(MainActivity.this, list));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private List<Person> XmlPullParserPerson(InputStream fis) {
List<Person> list_p= new ArrayList<Person>();;
XmlPullParser parser=Xml.newPullParser();
try {
//获得第一次解析事件码
parser.setInput(fis, "utf-8");
int eventType = parser.getEventType();
Person p=null;
String tName="";
Addr addr=null;
List<Addr> list_addr=null;
while (eventType!= XmlPullParser.END_DOCUMENT) {
switch (eventType) {
case XmlPullParser.START_DOCUMENT:
break;
case XmlPullParser.START_TAG:
tName=parser.getName();
if(tName.equals("person")){
p=new Person();
p.setId(Integer.parseInt(parser.getAttributeValue(0)));
}else if(tName.equals("address")){
list_addr = new ArrayList<Addr>();
}else if(tName.equals("addr")){
addr=new Addr();
}
break;
case XmlPullParser.TEXT:
String date=parser.getText();
if(tName.equals("name")){
p.setName(date);
}else if(tName.equals("age")){
p.setAge(Integer.parseInt(date));
}else if(tName.equals("area")){
addr.setArea(date);
}else if(tName.equals("detail")){
addr.setDetail(date);
}
break;
case XmlPullParser.END_TAG:
tName=parser.getName();
if(tName.equals("addr")){
list_addr.add(addr);
addr=null;
}else if(tName.equals("address")){
p.setAddress(list_addr);
list_addr=null;
}else if(tName.equals("person")){
list_p.add(p);
p=null;
}
tName="";
break;
}
//触发下一个事件
eventType=parser.next();
}
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list_p;
}
- pull 方式解析xml文件
- Pull方式解析XML文件
- PULL方式解析XML文件
- 利用PULL解析方式解析XML文件
- android Pull方式解析xml文件
- Android pull方式解析XML文件
- android 使用pull方式解析xml文件
- XML文件解析(Pull方式)
- Dom与Pull方式解析XML文件
- XML文件解析(Pull方式)
- android 使用pull 方式解析 xml文件
- 通过Pull方式解析xml文件
- android解析xml文件的方式 --- PULL
- 使用pull方式解析xml文件
- Pull解析Xml方式
- PULL方式解析xml
- xml解析--Pull方式
- pull方式解析xml
- 静默(silent)安装Oracle错误
- ippbx
- 【BZOJ3555】[Ctsc2014]企鹅QQ【Hash】
- sparkSQL学习记录之二
- 统计学习方法概论
- Pull方式解析XML文件
- C# 工具栏
- 比较小时计算,也可用于比较日期
- Android之Service(服务)
- AS3里的禁区:Timer
- PCL系列——三维重构之贪婪三角投影算法
- (问题记录)Failed to resolve: com.android.support:support-v4:23.1.1
- mysql Handler_read_rnd_next value 值超大(10G+)的处理
- C#之RabbitMQ系列(一)