Android XMLPullParser教程含代碼

    Android XMLPullParser教程

    Android建議使用XMLPullParser來解析xml文件,而不是SAX和DOM,因為它速度快。愛掏網 - it200.com

    org.xmlpull.v1.XmlPullParser 接口提供了使用XMLPullParser解析XML文檔的功能。愛掏網 - it200.com

    XmlPullParser的事件

    XMLPullParser的 next()方法 將光標指針移到下一個事件。愛掏網 - it200.com通常,我們使用XMLPullParser接口中定義的四個常量(作為事件)。愛掏網 - it200.com

    START_TAG :讀取了一個XML開始標簽。愛掏網 - it200.com

    TEXT :讀取了文本內容;可以使用getText()方法獲取文本內容。愛掏網 - it200.com

    END_TAG :讀取了一個結束標簽。愛掏網 - it200.com

    END_DOCUMENT :沒有更多的事件可用

    Android XMLPullParser示例

    activity_main.xml

    從palette中拖動一個listview。愛掏網 - it200.com現在activity_main.xml文件的內容如下:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity" >
    
        <ListView
            android:id="@+id/listView1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >
    
        </ListView>
    
    </RelativeLayout>
    

    XML文檔

    在項目的assets目錄下創建一個名為employees.xml的xml文件。愛掏網 - it200.com

    <?xml version="1.0" encoding="UTF-8"?>
    <employees>
        <employee>
            <id>1</id>
            <name>Sachin</name>
            <salary>50000</salary>      
        </employee>
        <employee>
            <id>2</id>
            <name>Nikhil</name>
            <salary>60000</salary>  
        </employee>
    
    </employees>
    

    Employee類

    現在創建與xml文件相對應的雇員類。愛掏網 - it200.com

    package com.example.xmlpullparsing;
    public class Employee {
         private int id;
         private String name;
         private float salary;
            public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public float getSalary() {
            return salary;
        }
        public void setSalary(float salary) {
            this.salary = salary;
        }
    
        @Override
        public String toString() {
            return " Id= "+id + "\n Name= " + name + "\n Salary= " + salary;
        }
    }
    

    XMLPullParserHandler類

    現在編寫使用XMLPullParser解析xml文件的代碼。愛掏網 - it200.com在這里,我們將以列表形式返回所有的員工。愛掏網 - it200.com

    package com.example.xmlpullparsing;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.ArrayList;
    import java.util.List;
    import org.xmlpull.v1.XmlPullParser;
    import org.xmlpull.v1.XmlPullParserException;
    import org.xmlpull.v1.XmlPullParserFactory;
    
    
    public class XmlPullParserHandler {
        private List<Employee> employees= new ArrayList<Employee>();
        private Employee employee;
        private String text;
    
        public List<Employee> getEmployees() {
            return employees;
        }
    
        public List<Employee> parse(InputStream is) {
               try {
                XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
                factory.setNamespaceAware(true);
                XmlPullParser  parser = factory.newPullParser();
    
                parser.setInput(is, null);
    
                int eventType = parser.getEventType();
                while (eventType != XmlPullParser.END_DOCUMENT) {
                    String tagname = parser.getName();
                    switch (eventType) {
                    case XmlPullParser.START_TAG:
                        if (tagname.equalsIgnoreCase("employee")) {
                            // create a new instance of employee
                            employee = new Employee();
                        }
                        break;
    
                    case XmlPullParser.TEXT:
                        text = parser.getText();
                        break;
    
                    case XmlPullParser.END_TAG:
                        if (tagname.equalsIgnoreCase("employee")) {
                            // add employee object to list
                            employees.add(employee);
                        }else if (tagname.equalsIgnoreCase("id")) {
                            employee.setId(Integer.parseInt(text));
                        }  else if (tagname.equalsIgnoreCase("name")) {
                            employee.setName(text);
                        } else if (tagname.equalsIgnoreCase("salary")) {
                            employee.setSalary(Float.parseFloat(text));
                        } 
                        break;
    
                    default:
                        break;
                    }
                    eventType = parser.next();
                }
    
            } catch (XmlPullParserException e) {e.printStackTrace();} 
            catch (IOException e) {e.printStackTrace();}
    
            return employees;
        }
    }
    

    MainActivity類

    現在,編寫代碼將列表數據顯示在ListView中。愛掏網 - it200.com

    package com.example.xmlpullparsing;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.List;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.view.Menu;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;
    
    public class MainActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
           ListView listView = (ListView) findViewById(R.id.listView1);
    
            List<Employee> employees = null;
            try {
                XmlPullParserHandler parser = new XmlPullParserHandler();
                InputStream is=getAssets().open("employees.xml");
                employees = parser.parse(is);
    
                ArrayAdapter<Employee> adapter =new ArrayAdapter<Employee>
        (this,android.R.layout.simple_list_item_1, employees);
                listView.setAdapter(adapter);
    
            } catch (IOException e) {e.printStackTrace();}
    
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.activity_main, menu);
            return true;
        }
    
    }
    
    

    下載這個示例

    輸出:

    聲明:所有內容來自互聯網搜索結果,不保證100%準確性,僅供參考。如若本站內容侵犯了原著者的合法權益,可聯系我們進行處理。
    發表評論
    更多 網友評論0 條評論)
    暫無評論

    返回頂部

    主站蜘蛛池模板: 中文字幕乱码亚洲精品一区| 91国在线啪精品一区| 国产成人一区二区三区免费视频| 亚洲av成人一区二区三区| 国产成人亚洲综合一区| 精品日韩一区二区| 白丝爆浆18禁一区二区三区| 国产一区二区三区在线免费 | 无码乱人伦一区二区亚洲一| 中文字幕一区视频| 日本免费一区尤物| 国产一区二区三区不卡观| 2021国产精品一区二区在线| 国产无吗一区二区三区在线欢| 国产美女视频一区| 亚洲色一区二区三区四区| 亚洲欧洲一区二区三区| 激情内射亚洲一区二区三区爱妻 | 国产福利一区二区在线视频| 日韩精品无码一区二区三区免费| 国产精品视频免费一区二区| 国产熟女一区二区三区四区五区 | 国产拳头交一区二区| 日韩一区二区久久久久久| 精品国产一区二区麻豆| 亚洲av日韩综合一区在线观看| 在线免费一区二区| 人妻天天爽夜夜爽一区二区| 视频一区二区在线观看| 蜜臀AV一区二区| 综合人妻久久一区二区精品 | 国产乱码精品一区二区三 | www一区二区三区| 海角国精产品一区一区三区糖心 | 国产综合无码一区二区三区| 成人一区专区在线观看| 性色av一区二区三区夜夜嗨| 国产精品女同一区二区久久| 国精产品999一区二区三区有限 | 亚洲AV无码一区二区三区性色| 曰韩精品无码一区二区三区|