1. 程式人生 > >java通過XmlPullParser類解析xml

java通過XmlPullParser類解析xml

xml檔案

<?xml version="1.0" encoding="UTF-8"?>    
<beauties>    
    <daxiongmei>    
        <name>楊冪</name>    
        <age>28</age>    
    </daxiongmei>    
    <daxiongmei>    
        <name>范冰冰</name>    
        <age>23</age>    
    </daxiongmei>    
    
</beauties> 


解析的類程式碼如下(XmlPullParser ):

<code class="language-java">    // 獲取xml檔案  
    InputStream is = this.getAssets().open("beauties.xml");  
    // 新建一個XmlPullParser物件,並設定編碼  
    XmlPullParserFactory parserfactory = XmlPullParserFactory.newInstance();
    //define xmlparse XmlPullParser
    XmlPullParser xpp = parserfactory.newPullParser();

    xpp.setInput(is,"UTF-8");  
    int eventType = xpp.getEventType();// 獲取事件型別  
  
    // 判斷事件是否到最後  
    while(eventType!=XmlPullParser.END_DOCUMENT)  
    {  
        switch (eventType) {  
        // 判斷當前事件是否為文件開始事件  
        case XmlPullParser.START_DOCUMENT:  
            mList = new ArrayList<Beauty>(); // 初始化Beauty集合  
            break;  
        // 判斷當前事件是否為標籤元素開始事件  
        case XmlPullParser.START_TAG:  
            if (xpp.getName().equals("daxiongmei")) { // 判斷開始標籤元素是否是daxiongmei  
                beauty = new Beauty();//宣告一個實體類,包含相應的get和set方法。  
            } else if (xpp.getName().equals("name")) {  
                eventType = xpp.next();// 讓解析器指向name屬性的值  
                // 得到name標籤的屬性值,並設定beauty的name  
                beauty.setName(xpp.getText());  
            } else if (xpp.getName().equals("age")) { // 判斷開始標籤元素是否是beauty  
                eventType = xpp.next();// 讓解析器指向age屬性的值  
                // 得到age標籤的屬性值,並設定beauty的age  
                beauty.setAge(xpp.getText());  
            }  
            break;  
        // 判斷當前事件是否為標籤元素結束事件  
        case XmlPullParser.END_TAG:  
            if (xpp.getName().equals("daxiongmei")) { // 判斷結束標籤元素是否是book  
                mList.add(beauty); // 將book新增到books集合  
                beauty = null;  
            }  
            break;  
        }  
        // 進入下一個元素並觸發相應事件  
        eventType = xpp.next();  
  
    }  
</code>