Android Pull 解析 XML

openkk 12年前發布 | 16K 次閱讀 Android Android開發 移動開發

下面是效果圖,代碼中有詳細解釋,

Android Pull 解析 XML

res/raw/person.xml

<?xml version="1.0" encoding="UTF-8"?>
<persons>
    <person id="001">
        <name>張三</name>
        <age>22</age>
    </person>

    <person id="002">
        <name>李四</name>
        <age>23</age>
    </person>

    <person id="003">
        <name>王五</name>
        <age>24</age>
    </person>
</persons>
PullParse.java

public class PullParse {
    public static List<Person> parse(InputStream inputStream) throws Exception{
        List<Person> persons=null;
        Person person=null;
        XmlPullParser parser=Xml.newPullParser();
        parser.setInput(inputStream, "UTF-8");
        int event=parser.getEventType();
        while(event!=XmlPullParser.END_DOCUMENT){
            switch(event){
            //判斷當前事件是否是文檔開始事件
            case XmlPullParser.START_DOCUMENT:
                persons=new ArrayList<Person>();
                break;
            //判斷當前事件是否是標簽元素開始事件
            case XmlPullParser.START_TAG:
                //判斷開始標簽元素是否是book
                if("person".equals(parser.getName())){
                    person=new Person();
                    person.setId(new Integer(parser.getAttributeValue(0)));
                }
                if(person!=null){
                    if("name".equals(parser.getName())){  
                        person.setName(parser.nextText());  
                    }else if("age".equals(parser.getName())){  
                        person.setAge(new Integer(parser.nextText()));  
                    }  
                }  
                break;
             //判斷當前事件是否是標簽元素結束事件
            case XmlPullParser.END_TAG:
                //判斷結束標簽元素是否是person
                if("person".equals(parser.getName())){  
                    persons.add(person);//將person添加到persons集合  
                    person = null;  
                }  
                break;
            }
            //進入下一個元素并觸發相應事件
            event = parser.next();
        }

        return persons;
    }
}

在主程序中調用

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        btn=(Button) findViewById(R.id.button);
        listView=(ListView) findViewById(R.id.listView);
        btn.setOnClickListener(new OnClickListener(){
            public void onClick(View arg0) {
                try {
                    InputStream i =getResources().openRawResource(R.raw.person);
                    List<Person>persons = PullParse.parse(i);
                    for (Iterator iterator = persons.iterator(); iterator.hasNext();) {
                        Person person = (Person) iterator.next();
                        list.add(String.valueOf("ID:"+person.getId()) + " 姓名: "
                                + person.getName() + " 年齡: " + person.getAge());
                    }
                } catch (Exception e) {}
                ArrayAdapter<String> adapter = new ArrayAdapter<String>(
                        getApplicationContext(),
                        android.R.layout.simple_list_item_1,
                        list);
                listView.setAdapter(adapter);
            }
        });
    }


 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!