java 解析xml文档---通过XmlPullParser解析方式

 1 package com.zx;
 2 
 3 import java.io.FileInputStream;
 4 import java.io.IOException;
 5 import java.util.ArrayList;
 6 import java.util.List;
 7 
 8 import org.json.JSONException;
 9 import org.xmlpull.v1.XmlPullParser;
10 import org.xmlpull.v1.XmlPullParserException;
11 import org.xmlpull.v1.XmlPullParserFactory;
12 
13 
14 
15 class MyDay17Xml {
16     
17     public static void main(String []args) throws JSONException{
18         
19     }
20     
21     public static List<Person> PullParserXml() throws XmlPullParserException, IOException {
22         //数据定义
23         List<Person> list=null;
24         Person person=null;
25         //获得xmlpullparser对象
26         XmlPullParserFactory factory=XmlPullParserFactory.newInstance();
27         XmlPullParser parser=factory.newPullParser();
28         //获取输入流
29         FileInputStream fis=new FileInputStream("person.xml");
30         //设置流和字符集
31         parser.setInput(fis,"utf-8");
32         //开始解析
33         int event=parser.getEventType();
34         while(event!=XmlPullParser.END_DOCUMENT){
35             switch (event){
36             /**
37              * 开始标记,通常进行相关集合或者对象的初始化
38              
39              */
40             case XmlPullParser.START_DOCUMENT:
41                 list=new ArrayList<Person>();
           break;
42 case XmlPullParser.START_TAG: 43 String tagName=parser.getName(); 44 //得到属性标记通过getName 45 if("person".equals(tagName)){ 46 person=new Person(); 47 //获得标记后的属性值通过getAttributeName和getAttributeValue两个方法 48 for(int i=0;i<parser.getAttributeCount();i++){ 49 String name=parser.getAttributeName(i); 50 String value=parser.getAttributeValue(i); 51 if("id".equals(name)){ 52 person.setId(value); 53 } 54 } 55 }else if("name".equals(tagName)){ 56 //得到属性标记之后的值,通过nextText方法 57 person.setName(parser.nextText()); 58 }else if("age".equals(tagName)){ 59 person.setAge(parser.nextText()); 60 }
           break;
61 case XmlPullParser.END_TAG: 62 if("person".equals(parser.getName())){ 63 list.add(person); 64 person=null; 65 }
          break;
66 }
        event=parser.next();
67 } 68 //解析结束,返回集合 69 return list; 70 } 71 72 } 73 class Person{ 74 private String name,age,id; 75 76 public String getName() { 77 return name; 78 } 79 80 public void setName(String name) { 81 this.name = name; 82 } 83 84 public String getAge() { 85 return age; 86 } 87 88 public void setAge(String age) { 89 this.age = age; 90 } 91 92 public String getId() { 93 return id; 94 } 95 96 public void setId(String id) { 97 this.id = id; 98 } 99 }

 

相关文章

Java中的String是不可变对象 在面向对象及函数编程语言中,不...
String, StringBuffer 和 StringBuilder 可变性 String不可变...
序列化:把对象转换为字节序列的过程称为对象的序列化. 反序...
先说结论,是对象!可以继续往下看 数组是不是对象 什么是对...
为什么浮点数 float 或 double 运算的时候会有精度丢失的风险...
面试题引入 这里引申出一个经典问题,看下面代码 Integer a ...