主类:
package com.example.day12_xml_pull; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import android.app.Activity; import android.os.Bundle; import android.util.Xml; public class MainActivity extends Activity { private Person person; List<Person> list = new ArrayList<Person>(); private String tagName; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 得到xml解析器 XmlPullParser pullParser = Xml.newPullParser(); try { pullParser.setInput(getAssets().open("data.xml"), "UTF-8"); // 得到事件类型 int eventType = pullParser.getEventType(); // 只有文档没有结束,就一直读取 while (eventType != XmlPullParser.END_DOCUMENT) { switch (eventType) { case XmlPullParser.START_DOCUMENT: System.out.println("开始读取文档"); break; // 读到了一个开始标签 case XmlPullParser.START_TAG: // 获取标签名字 tagName = pullParser.getName(); if ("person".equals(tagName)) { // 读到person开始标签,new一个对象 person = new Person(); // 通过角标获取属性值 String id = pullParser.getAttributeValue(0).trim(); person.setId(id); // 读到name开始标签 } else if ("name".equals(tagName)) { // 得到标签里的文本 String nameText = pullParser.nextText().trim(); person.setName(nameText); }else if("age".equals(tagName)){ // 得到标签里的文本 String ageText = pullParser.nextText().trim(); person.setAge(ageText); } break; // 读到了结束标签 case XmlPullParser.END_TAG: // 得到结束标签的名字 tagName = pullParser.getName(); // 结束标签是person,代表着一条person数据以及读完并封装 if ("person".equals(tagName)) { System.out.println(person.toString()); // 添加person到集合 list.add(person); //person = null; } break; case XmlPullParser.END_DOCUMENT: System.out.println("文档结束"); break; } // 得到下一个节点的类型 eventType = pullParser.next(); } } catch (XmlPullParserException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }自定义类:
package com.example.day12_xml_pull; public class Person { private String id; private String name; private String age; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } @Override public String toString() { return "Person [id=" + id + ", name=" + name + ", age=" + age + "]"; } }