編輯:關於Android編程
在android中處理XML可以使用三種方式:DOM、SAX、PUll,這裡我只是簡單介紹Pull方式,其他的兩個方式可以自己去找找資料。
Pull方式在我理解跟SAX原理差不多,都是不會將整個XML一次加載,而是從頭開始一部分一部分的加載,然後通過一些事件判斷節點,比如會有文檔開始/結束事件、標簽開始/結束事件等,通過判斷事件的類型及內容能夠確定當前到達的XML節點,然後構造數據。下面給出一個簡單的例子,在例子中只是使用了START_TAG事件:
package com.mxy.pull; 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; import com.mxy.MainActivity; import android.util.Log; import android.util.Xml; public class PullParseXml { public void PullParseXML(){ XmlPullParser parser = Xml.newPullParser(); InputStream ins = MainActivity.class.getClassLoader().getResourceAsStream("data.xml"); try { parser.setInput(ins, "utf-8"); int type = parser.getEventType(); //設置到文檔結束的時候,退出循環 while(type != XmlPullParser.END_DOCUMENT){ String name = null; String id = null; switch (type) { case XmlPullParser.START_TAG: if("student".equals(parser.getName())){ id = parser.getAttributeValue(0); Log.i("mxy", "student id=" + id); }else if("name".equals(parser.getName())){ name = parser.nextText(); Log.i("mxy", "name=" + name); } break; case XmlPullParser.END_TAG: //處理TAG結束事件 break; case XmlPullParser.TEXT: break; //還有其他的事件 default: break; } //這句很重要,將當前的節點類型設置為下一個,以便進入下次循環 type = parser.next(); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }下面簡單介紹一下構造一個XML文件,最簡單的就是我們可以使用字符串去拼接一段XML,這種方式最簡單最易理解,但是有一點很容發生錯誤。所以我們可以使用XmlSerializer來構造一個XML數據。
下面給出一個小例子,是生成一段簡單的XML,並將其保存到外部SD卡上:
/** * Xml序列話 * 1 直接拼字符串 * 2 使用XmlSerializer進行序列話 */ private void xmlSerializerMethod() { XmlSerializer serializer = Xml.newSerializer(); File file = new File(Environment.getExternalStorageDirectory(),"backup.xml"); //這裡獲取的地址是/storage/sdcard/ Log.i("mxy",Environment.getExternalStorageDirectory().toString()); try { //需要給serializer設置一個Output否則我們序列化的xml,無法取出 StringWriter writer = new StringWriter(); serializer.setOutput(writer); FileOutputStream fos = new FileOutputStream(file); serializer.startDocument("utf-8", true); serializer.setOutput(fos, "utf-8"); serializer.startTag(null, "sms"); serializer.startTag(null, "name"); serializer.attribute(null, "id", "1"); serializer.text("你好"); serializer.endTag(null, "name"); serializer.endTag(null, "sms"); serializer.endDocument(); //將數據寫入到文件中 fos.write(writer.toString().getBytes()); fos.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }可能我寫的不是很清楚,如果想進一步了解可以參看http://blog.csdn.net/liuhe688/article/details/6415593。
例子工程下載地址:http://download.csdn.net/detail/mengxiangyue/7020131
轉載請注明出處:http://blog.csdn.net/mengxiangyu
本文實例介紹了Android實現粒子雨效果的實現過程,分享給大家供大家參考,具體內容如下先看看效果圖:具體實現方法:1.baseview主要是設定雨滴要實現的動作,只是先
關於這個隊列先說明一點,該隊列的實現既非Collection的子類,亦非Map的子類,而是Message本身。因為Message本身就是鏈表節點。隊列中的Message
一家移動互聯網公司,說到底,要盈利總是需要付費用戶的,自己開發支付系統對於資源有限的公司來說顯然不太明智,國內已經有多家成熟的移動支付提供商,阿裡就是其中之一。 筆者在此
使用surfaceView自定義抽獎大轉盤話不多說,先上效果圖完整代碼地址歡迎start實現思路以及過程1、首先了解SurfaceView的基本用法,它跟一般的View不