為了學(xué)習(xí)Pull解析xml抄瓦,可以簡(jiǎn)單的做個(gè)小Demo
第一步:以字符串的形式創(chuàng)建出xml。
String str = "<?xml version="1.0" encoding="UTF-8"?>\n" +
"<persons>\n" +
" <person id="1">\n" +
" <name>小羅</name>\n" +
" <age>21</age>\n" +
" </person>\n" +
" <person id="2">\n" +
" <name>android</name>\n" +
" <age>15</age>\n" +
" </person>\n" +
"</persons>";第二步:根據(jù)xml文件封裝實(shí)體類(lèi):
public class Person implements Serializable {
int id;
String name;
int age;
public void setAge(int age) {
this.age = age;
}
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
@Override public String toString() {
return "Person{" +
"age=" + age +
", id=" + id +
", name='" + name + ''' + '}';
}
}第三步:創(chuàng)建解析方法:
public List<Person> PullParseXml(InputStream inputStream) throws XmlPullParserException, IOException {
List<Person> persons = new ArrayList<>();
Person person = null;
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlPullParser xmlPullParser = factory.newPullParser();
xmlPullParser.setInput(inputStream, "utf-8");
int eventType = xmlPullParser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
switch (eventType) {
// 解析到文檔開(kāi)始的時(shí)候
case XmlPullParser.START_DOCUMENT:
persons = new ArrayList<Person>();
break;
// 解析到xml標(biāo)簽的時(shí)候
case XmlPullParser.START_TAG:
if ("person".equals(xmlPullParser.getName())) {
person = new Person();
// 得到person元素的第一個(gè)屬性唠帝,也就是ID
person.setId(Integer.parseInt(xmlPullParser.getAttributeValue(0)));
} else if ("name".equals(xmlPullParser.getName())) {
// 如果是name元素,則通過(guò)nextText()方法得到元素的值
person.setName(xmlPullParser.nextText());
} else if ("age".equals(xmlPullParser.getName())) {
person.setAge(Integer.parseInt(xmlPullParser.nextText()));
}
break;
// 解析到xml標(biāo)簽結(jié)束的時(shí)候
case XmlPullParser.END_TAG:
if ("person".equals(xmlPullParser.getName())) {
persons.add(person);
person = null;
}
break;
}
// 通過(guò)next()方法觸發(fā)下一個(gè)事件
eventType = xmlPullParser.next();
}
return persons;
}第四步:調(diào)用解析方法:
byte[] bytes = str.getBytes();
ByteArrayInputStream inputStream = new ByteArrayInputStream(bytes);
try {
persons = PullParseXml(inputStream);
Log.d("TAG", "size = " + persons.size());
Log.d("TAG", persons.get(0).toString());
Log.d("TAG", persons.get(1).toString());
} catch (Exception e) {
e.printStackTrace();
}第五步:運(yùn)行程序漾狼,你會(huì)得到如下Log: