您好,登錄后才能下訂單哦!
現(xiàn)在做的應(yīng)用基本離不網(wǎng)絡(luò),數(shù)據(jù)協(xié)議一般是使用 輕量級的 json 、xml,這篇文章分享一個解釋xml的功能
方便從網(wǎng)絡(luò)的字節(jié)流中提取字符串?dāng)?shù)據(jù)。
代碼如下:
public class XMLLoader { public interface OnLoadXMLCompletedListener{ public void onLoadXMLCompleted(Object obj, int what,Bundle data); } private static final String TAG = "XMLLoader"; private XMLLoaderHandler mHandler; private Handler mHListener; private OnLoadXMLCompletedListener mOnLoadXMLCompletedListener; private String mUrl; private int mWhat; private Bundle mData; public void load(String url, XMLLoaderHandler handler, OnLoadXMLCompletedListener listener, int what,Bundle data) { mUrl = url; mHandler = handler; mOnLoadXMLCompletedListener = listener; mWhat = what; mData = data; Util.log(TAG, "url = "+mUrl); URLLoader loader = new URLLoader(); loader.loadUrl(url, new URLLoader.OnLoadFinishedListener() { @Override public void onFinish(InputStream is) { // Util.log(TAG, "Func:onFinish, Thread name = " + Thread.currentThread().getName() + ", ID = " + Thread.currentThread().getId() + ", state = " + Thread.currentThread().getState()); parser(is); } }); } public void load(String url, XMLLoaderHandler handler, Handler listener, int what,Bundle data) { mUrl = url; mHandler = handler; mHListener = listener; mWhat = what; mData = data; Util.log(TAG, "url = "+mUrl); URLLoader loader = new URLLoader(); loader.loadUrl(url, new URLLoader.OnLoadFinishedListener() { @Override public void onFinish(InputStream is) { parser(is); } }); } public void load(InputStream is,XMLLoaderHandler handler, Handler listener, int what,Bundle data){ mHandler = handler; mHListener = listener; mWhat = what; mData = data; Util.log(TAG, "InputSream = " + is); if(is != null) parser(is); } public void load(InputStream is, XMLLoaderHandler handler, OnLoadXMLCompletedListener listener, int what,Bundle data) { mHandler = handler; mOnLoadXMLCompletedListener = listener; mWhat = what; mData = data; Util.log(TAG, "InputSream = " + is); if(is != null) parser(is); } public Object load(InputStream is){ if(is != null){ return parser(is); }else return null; } public Object load(byte[] body,XMLLoaderHandler handler, OnLoadXMLCompletedListener listener){ mHandler = handler; mOnLoadXMLCompletedListener = listener; InputStream is=new ByteArrayInputStream(body); if(is!=null){ return parser(is); }else return null; } public Object load(InputStream is,XMLLoaderHandler handler){ mHandler = handler; Util.log(TAG, "InputSream = " + is); if(is != null) return parser(is); return null; } private Object parser(InputStream is) { SAXParserFactory factory=SAXParserFactory.newInstance(); Object obj = null; try {//解釋xml數(shù)據(jù) SAXParser parser=factory.newSAXParser(); XMLReader xmlReader=parser.getXMLReader(); xmlReader.setContentHandler(mHandler); InputSource input=new InputSource(); input.setEncoding("utf-8"); input.setByteStream(is); xmlReader.parse(input); obj = mHandler.getInfo(); Util.log(TAG, "[parser] obj = "+obj); } catch(Exception ex) { ex.printStackTrace(); } // Util.log(TAG, "Func:parser, Thread name = " + Thread.currentThread().getName() + ", ID = " + Thread.currentThread().getId() + ", state = " + Thread.currentThread().getState()); if(null != mOnLoadXMLCompletedListener) {//通知UI線程更新數(shù)據(jù) mOnLoadXMLCompletedListener.onLoadXMLCompleted(obj, mWhat,mData); } else if(null != mHListener){ Message msg = mHListener.obtainMessage(mWhat); if(mData != null) msg.setData(mData); msg.obj = obj; msg.sendToTarget(); } return obj; } }
更多的移動互聯(lián)網(wǎng)的發(fā)展趨勢、app開發(fā)、移動互聯(lián)網(wǎng)應(yīng)用相關(guān)的資料請到互聯(lián)網(wǎng)的一點(diǎn)事:www.yidin.net 留言
android QQ群:222392467
資料:
http://www.yidin.net/?p=8280
http://www.yidin.net/?p=9725
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。