安卓系列三(使用pull 方式解析xml檔案)

來源:互聯網
上載者:User

標籤:

import java.io.InputStream;

import java.io.OutputStream;

import java.util.ArrayList;

import java.util.List;

import org.xmlpull.v1.XmlPullParser;

import org.xmlpull.v1.XmlSerializer;

import android.annotation.SuppressLint;

import android.util.Xml;

import com.example.domain.Person;


/**

 * @author wesley

 * @version 

 * @date 2015年1月26日 上午11:32:09

 * 

 */

public class XmlService {

/**

* 讀取資料

* @param xml 要讀取的資料

* @return

* @throws Exception

*/

@SuppressLint("UseValueOf") 

public static List<Person> readXml(InputStream xml) throws Exception{

List<Person> persons = null;

Person person = null;

//建立一個Pull執行個體

XmlPullParser pullParser = Xml.newPullParser();

//為Pull解析器設定要解析的XML資料

pullParser.setInput(xml, "UTF-8");

//得到第一個事件

int event = pullParser.getEventType();

//判斷是不是文檔結束事件

while(event != XmlPullParser.END_DOCUMENT){

switch (event) {

case XmlPullParser.START_DOCUMENT:

persons = new ArrayList<Person>();

break;

case XmlPullParser.START_TAG:

if("person".equals(pullParser.getName())){

int id = new Integer(pullParser.getAttributeValue(0));

person = new Person();

person.setId(id);

}

if("name".equals(pullParser.getName())){

String name = pullParser.nextText();

person.setName(name);

}

if("age".equals(pullParser.getName())){

int age = new Integer(pullParser.nextText());

person.setAge(age);

}

break;

case XmlPullParser.END_TAG:

if("person".equals(pullParser.getName())){

persons.add(person);

person = null;

}

break;

}

event = pullParser.next();

}

return persons;

}

/**

* 儲存資料

* @param persons 資料

* @param out  輸入方向

* @throws Exception

*/

public static void saveXml(List<Person> persons,OutputStream out) throws Exception{

//建立一個序列化執行個體

XmlSerializer serializer = Xml.newSerializer();

//設定輸出資料流

serializer.setOutput(out, "UTF-8");

//設定文檔

serializer.startDocument("UTF-8", true);

//設定開始標籤

serializer.startTag(null, "persons");

for(Person person : persons){

serializer.startTag(null, "person");

serializer.attribute(null, "id", person.getId().toString());

serializer.startTag(null, "name");

serializer.text(person.getName());

serializer.endTag(null, "name");

serializer.startTag(null, "age");

serializer.text(person.getAge().toString());

serializer.endTag(null, "age");

serializer.endTag(null, "person");

}

//建立結束標籤

serializer.endTag(null, "persons");

//結束文檔

serializer.endDocument();

out.flush();

out.close();

}


}


安卓系列三(使用pull 方式解析xml檔案)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.