您的位置:首页 > 移动开发 > Android开发

android 中 xml 解析技术之 pull 解析

2010-11-01 15:58 543 查看
以下是xml 代码:
<?xml version="1.0" encoding="UTF-8"?>
<persons>
<person id="1">
<name>javacn</name>
<age>20</age>
</person>
<person id="20">
<name>javacn_org</name>
<age>25</age>
</person>
</persons>


核心代码案例如下:
import org.xmlpull.v1.XmlPullParser;
import android.util.Xml;
import cn.itcast.xml.domain.Person;

public class PullXMLReader {

public static List<Person> readXML(InputStream inStream) {
XmlPullParser parser = Xml.newPullParser();
try {
parser.setInput(inStream, "UTF-8");
//获得文档事件编号
int eventType = parser.getEventType();
Person currentPerson = null;
List<Person> persons = null;

//判断该事件是不是结束事件
while (eventType != XmlPullParser.END_DOCUMENT) {
switch (eventType) {
case XmlPullParser.START_DOCUMENT://文档开始事件,可以进行数据初始化处理
persons = new ArrayList<Person>();
break;

case XmlPullParser.START_TAG://开始元素事件
String name = parser.getName();
if (name.equalsIgnoreCase("person")) {
currentPerson = new Person();
currentPerson.setId(new Integer(parser.getAttributeValue(null, "id")));
} else if (currentPerson != null) {
if (name.equalsIgnoreCase("name")) {
currentPerson.setName(parser.nextText());// 如果后面是Text节点,即返回它的值
} else if (name.equalsIgnoreCase("age")) {
currentPerson.setAge(new Short(parser.nextText()));
}
}
break;

case XmlPullParser.END_TAG://结束元素事件
if (parser.getName().equalsIgnoreCase("person") && currentPerson != null) {
persons.add(currentPerson);
currentPerson = null;
}
break;
}

//继续促发事件
eventType = parser.next();
}
inStream.close();
return persons;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}


文章地址:http://www.javacn.org/forum.php?mod=viewthread&tid=9&extra=page%3D1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: