person.xml
<?xml version="1.0" encoding="utf-8"?>//文档开头,parser.next从这里开始
<Persons>//<>的内容就是xml的节点(element)
<Person id="18">//id=“”节点的属性
<name>allen</name>//allen 节点文本
<age>36</age>
</Person>
<Person id="28">
<name>james</name>
<age>25</age>
</Person>//文档结束
</Persons>
pull原理,基于事件进行解析,自上而下的解析,不能返回
1 在程序代码中使用,可以放入asserts目录下,就可以读取
2 创建业务bean(domain包或bean包),将节点信息存入
为了业务严谨,在setAge中要设置年龄范围
3
public List<Person> getPersons(String filename){//filename 要解析的xml文件
//获得asserts管理者
AssertManager manager = context.getAsserts();
//打开一个文件,获取文件的输入流
InputStream is = manager.open("person.xml");
//在ansroid使用Pull解析xml
//1 获取pull解析器
XMLPullParser parser = Xml.newPullParser();
//2 解析解析器的一些参数
parser.setInput(is , inputEncoding);
//is 数据源 inputEncoding 编码格式
//3 获取Pull解析器对应的事件类型
int type = parser.getEventType();//这时,解析器在文档的开头
Person person;
List<Person> persons;
//4 如果type不等于文档的结束
while( type != parser.getEventType.END_DOCUMENT){
if(type == XmlPullParser.START_TAG){//START_TAG某个元素开始的标签
if("person".equals(parser.getName())){//getName()返回当前标签所对应的名字
Person =new Person();
int id =Integer.parseInt(person.getAttributeValue(0));//解析id的属性
person.setId(id);
}else if("name".equals(parser.getName())){
String name = parser.nextText();
person.setName(name);
}
}
//判断是否到标签结尾,如果到结尾,就将文本内容添加到List<Person>
if(type = XmlPullParser.END_TAG){
if("person".equals(parser.getName())){
persons.add(person);
}
}
type = parser.next();
}
return persons;
}
pull解析xml学习笔记
最新推荐文章于 2022-02-19 14:58:34 发布