andorid xml 解析
public class PersonService {
/** * 获取数据 该方法没有使用到 personService 的成员变量; 所以老师把 它 设置为static 的; * * @param xml * @return * @throws Exception */ // 如果没有控制台输出; 可以双击 device 设备激活;然后就有了 public static List<Person> getPersons(InputStream xml) throws Exception { List<Person> persons = null; Person person = null; // XmlPullParser pullParser1 = XmlPullParserFactory.newInstance() // .newPullParser(); 和下面一样的; 就是没有下面的简单; XmlPullParser pullParser = Xml.newPullParser(); pullParser.setInput(xml,"UTF-8");// 为Pull解析器设置要解析的XML数据 int event = pullParser.getEventType();// 第一个触发了start document 事件 头信息; while (event != XmlPullParser.END_DOCUMENT) { switch (event) { case XmlPullParser.START_DOCUMENT:// <?xml version="1.0" // encoding="UTF-8"?> persons = new ArrayList<Person>(); break; // 自己感觉如果是 case XmlPullParser.START_TAG: if ("person".equals(pullParser.getName())) {// 解析到person 节点; int id = new Integer(pullParser.getAttributeValue(0)); person = new Person(); person.setId(id); } if ("name".equals(pullParser.getName())) { String name = pullParser.nextText();// 不会自动的移动指针; // 需要用nextText 来移动; person.setName(name); } if ("age".equals(pullParser.getName())) { int age = new Integer(pullParser.nextText());// 不会自动的移动指针; // 需要用nextText来移动; person.setAge(age); } break; case XmlPullParser.END_TAG: if ("person".equals(pullParser.getName())) { persons.add(person); person = null; } break; }// 指针进入到下一个节点; 触发下个节点的事件 ; // 并且把 event 的值重新赋值; event = pullParser.next(); } return persons; } //------------------------------------------------------------------------------------------------------------------- /** * 保存数据 没有用到成员变量; 可以做成staic 的; * */ // 利用面向对象的方式来 输出xml 文件;不用自己拼接字符串的方式输出xml; public static void save(List<Person> persons,OutputStream out) throws Exception { XmlSerializer serializer = Xml.newSerializer();// 获取序列化器 serializer.setOutput(out,"UTF-8");//把流放到 序列化器里面;和上面类似; 并且设置流的字符集; serializer.startDocument("UTF-8",true);// 设置 头信息; 是否独立的; serializer.startTag(null,"persons"); for (Person person : persons) { serializer.startTag(null,"person"); serializer.attribute(null,"id",person.getId().toString()); serializer.startTag(null,"name"); serializer.text(person.getName()); serializer.endTag(null,"name"); serializer.startTag(null,"age"); serializer.text(person.getAge().toString()); serializer.endTag(null,"age"); serializer.endTag(null,"person"); } serializer.endTag(null,"persons"); serializer.endDocument(); out.flush();// 刷新下缓冲区; out.close(); } } // junit test; public class PersonServiceTest extends AndroidTestCase { //------------------------------------------------------------------------------------------------------------------- <?xml version="1.0" encoding="UTF-8"?> <persons> <person id="23"> <name>liming</name> <age>30</age> </person> <person id="20"> <name>zhangxiaoxiao</name> <age>25</age> </person> </persons> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |