android使用XmlPullParser來解析XML檔案

來源:互聯網
上載者:User

android使用XmlPullParser來解析XML檔案

解析以下的一個XML:

 

77f265bb46de068e78f35afbadec62af30119522459334369527955xtaJR3436952795005xtaJR馬豔麗http://tp2.sinaimg.cn/1195224593/50/5614100014/0101321125000000婚禮在北海美麗的北海公園舉行…好美好浪漫的地方… http://ss12.sinaimg.cn/wap240/473dae11494344debfc5b1288852274多媒體訊息

這樣來寫解析:

 

 

public static Object[] getMBlogList(String content) throws HttpException {try {Object[] result = new Object[3];List lst = new ArrayList();result[1] = lst;final XmlPullParser parser = Xml.newPullParser();parser.setInput(new StringReader(content));int type;while ((type = parser.next()) != XmlPullParser.END_DOCUMENT) {switch (type) {case XmlPullParser.START_TAG:這裡開始讀取最外層的標籤屬性if (parser.getName().equals(count)) {try {result[0] = new Integer(parseText(parser));} catch (Exception e) {result[0] = 0;}} else if (parser.getName().equals(mblog)) {MBlog mb = parseMBlog(parser);if (mb != null)lst.add(mb);} else if (parser.getName().equals(relation)) {result[2] = new Integer(parseText(parser));}break;default:break;}}return result;} catch (NumberFormatException e) {throw new HttpException(e);} catch (XmlPullParserException e) {throw new HttpException(e);} catch (IOException e) {throw new HttpException(e);} catch (ParseException e) {throw new HttpException(e);}}private static String parseText(XmlPullParser parser) throws ParseException {try {int type = parser.next();if (type == XmlPullParser.TEXT) {return replaceEntityRef(parser.getText().trim());} else {return ;}} catch (Exception e) {throw new ParseException(PARSE_ERROR, e);}}public static MBlog parseMBlog(XmlPullParser parser) throws ParseException {MBlog b = new MBlog();//這裡開始讀取每個MBlog對象try {int type;LOOP: {while ((type = parser.next()) != XmlPullParser.END_DOCUMENT) {switch (type) {case XmlPullParser.START_TAG:if (parser.getName().equals(uid)) {b.uid = parseText(parser);if (b.uid.equals())return null;} else if (parser.getName().equals(favid)) {b.favid = parseText(parser);} else if (parser.getName().equals(mblogid)) {b.mblogid = parseText(parser);} else if (parser.getName().equals(nick)) {String s = parseText(parser);b.nick = s;} else if (parser.getName().equals(portrait)) {b.portrait = parseText(parser);} else if (parser.getName().equals(vip)) {b.vip = (parseText(parser).equals(1)) ? true : false;} else if (parser.getName().equals(content)) {b.content = parseText(parser);} else if (parser.getName().equals(rtrootuid)) {b.rtrootuid = parseText(parser);} else if (parser.getName().equals(rtrootid)) {b.rtrootid = parseText(parser);} else if (parser.getName().equals(rtrootnick)) {String s = parseText(parser);b.rtrootnick = s;} else if (parser.getName().equals(rtrootvip)) {b.rtrootvip = (parseText(parser).equals(1)) ? true : false;} else if (parser.getName().equals(rtreason)) {b.rtreason = parseText(parser);} else if (parser.getName().equals(rtnum)) {b.rtnum = Integer.parseInt(parseText(parser));} else if (parser.getName().equals(commentnum)) {b.commentnum = Integer.parseInt(parseText(parser));} else if (parser.getName().equals(time)) {b.time = new Date(Long.parseLong(parseText(parser)) * 1000);} else if (parser.getName().equals(pic)) {b.pic = parseText(parser);} else if (parser.getName().equals(source)) {b.src = parseText(parser);} else if (parser.getName().equals(longitude)) {b.longitude = parseText(parser);} else if (parser.getName().equals(latitude)) {b.latitude = parseText(parser);}break;case XmlPullParser.END_TAG:if (parser.getName().equals(mblog)) {break LOOP;}break;default:break;}}}return b;} catch (Exception e) {throw new ParseException(PARSE_ERROR, e);}}

在Activity中這樣調用:

 

 

public void parseAssertData() {InputStream is = null;try {is = this.getAssets().open(11.xml, Context.MODE_PRIVATE);int length = is.available();byte[] buffer = new byte[length];is.read(buffer);String temp = new String(buffer);try {Object[] array = ParseData.getMBlogList(temp);} catch (HttpException e) {e.printStackTrace();}} catch (IOException ex) {ex.printStackTrace();}}

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.