xml解析之pull解析
发布时间:2020-12-16 05:47:04 所属栏目:百科 来源:网络整理
导读:将xml文件解析成java对象 public static ListPerson getPerson(InputStream is) throws IOException{ ListPerson list=null; Person p=null; //获取解析类 XmlPullParser parser=Xml.newPullParser(); try { //设置输入源 parser.setInput(is,"utf-8"); int
将xml文件解析成java对象 public static List<Person> getPerson(InputStream is) throws IOException{ List<Person> list=null; Person p=null; //获取解析类 XmlPullParser parser=Xml.newPullParser(); try { //设置输入源 parser.setInput(is,"utf-8"); int type=parser.getEventType(); while(type!=XmlPullParser.END_DOCUMENT){ switch(type){ case XmlPullParser.START_DOCUMENT: //当开始解析文档的时候 list=new ArrayList<Person>(); case XmlPullParser.START_TAG: String tagName= parser.getName(); if("person".equals(tagName)){ p=new Person(); //设置属性 p.setId(Integer.parseInt(parser.getAttributeValue(0))); }else if("name".equals(tagName)){ Log.v("tag","name:"+tagName); p.setName(parser.nextText()); }else if("age".equals(tagName)){ p.setAge(Integer.parseInt(parser.nextText())); } break; case XmlPullParser.END_TAG: if("person".equals(parser.getName())){ list.add(p); p=null; } break; } //移动 type=parser.next(); } } catch (XmlPullParserException e) { // TODO Auto-generated catch block e.printStackTrace(); } return list; } //将javabean对象转换成xml文件存储 public static void savePerson(List<Person> list,Writer writer){ //xml序列化工具 XmlSerializer serializer=Xml.newSerializer(); try { //设置输出源 serializer.setOutput(writer); //开始 serializer.startDocument("utf-8",true); serializer.startTag(null,"persons"); for(int i=0;i<list.size();i++){ serializer.startTag(null,"person"); //设置属性 serializer.attribute(null,"id",list.get(i).getId()+""); serializer.startTag(null,"name"); serializer.text(list.get(i).getName()); serializer.endTag(null,"name"); serializer.startTag(null,"age"); serializer.text(list.get(i).getAge()+""); serializer.endTag(null,"age"); serializer.endTag(null,"person"); } serializer.endTag(null,"persons"); //结束 serializer.endDocument(); serializer.flush(); writer.flush(); writer.close(); }catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |