java通過XmlPullParser類解析xml
阿新 • • 發佈:2018-11-02
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>