Android App中讀取XML與JSON格式數(shù)據(jù)的基本方法示例
更新時間:2016年03月22日 16:36:52 作者:chenlijian
這篇文章主要介紹了Android App中讀取XML與JSON格式數(shù)據(jù)的基本方法示例,Android中自帶的JSONObject非常好用,需要的朋友可以參考下
XML
假如有這樣一個XML格式的數(shù)據(jù):
<?xml version="1.0" encoding="utf-8"?> <resources> <customer name="luopeng" age="21" gender="1" emial="dylankeepmoving@163.com"/> <customer name="dylan" age="22" gender="2" emial="710097663@qq.com"/> <customer name="android" age="6" gender="2" emial="android@gmail.com"/> </resources>
下面我們來編寫一個類來讀取,此類的作用是點(diǎn)擊按鈕后在EditView上顯示資源文件(一個XML)中的內(nèi)容,此例中會使用到XMLResourceParser
public class TestXmlResourceParserActivity extends Activity { private EditText et; private Button myButton; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // 變量在內(nèi)部類中使用的前提是此變量必須是final修飾的 myButton = (Button) this.findViewById(R.id.btn01); et = (EditText) this.findViewById(R.id.edittext01); myButton.setOnClickListener(new OnClickListener() { StringBuilder sb = new StringBuilder(""); Resources res = getResources(); XmlResourceParser xrp = res.getXml(R.xml.test); @Override public void onClick(View v) { int counter = 0; try { // 判斷是否到了文件的結(jié)尾 while (xrp.getEventType() != XmlResourceParser.END_DOCUMENT) { //文件的內(nèi)容的起始標(biāo)簽開始,注意這里的起始標(biāo)簽是test.xml文件里面<resources>標(biāo)簽下面的第一個標(biāo)簽 if (xrp.getEventType() == XmlResourceParser.START_TAG) { String tagname = xrp.getName(); if (tagname.endsWith("customer")) { counter++; sb.append("這是第" + counter + "客戶"+"\n"); sb.append("姓名:"+xrp.getAttributeValue(0)+"\n"); sb.append("年齡:"+xrp.getAttributeValue(1)+"\n"); sb.append("性別:"+xrp.getAttributeValue(2)+"\n"); sb.append("郵箱:"+xrp.getAttributeValue(3)+"\n\n"); } } xrp.next(); } et.setText(sb.toString()); } catch (XmlPullParserException e) { } catch (IOException e) { e.printStackTrace(); } } }); }
JSON
創(chuàng)建JSON數(shù)據(jù)
try { //首先創(chuàng)建對象中的一個單個鍵值對 JSONObject root = new JSONObject(); root.put("cat", "it"); //另一個鍵值對的值是一個數(shù)組,數(shù)組里裝了3個JSON對象,所以再分別搞3個JSONObject對象存放鍵值對 JSONObject lan1 = new JSONObject(); lan1.put("id", "1"); lan1.put("ide", "Eclipse"); lan1.put("name","Java"); JSONObject lan2 = new JSONObject(); lan2.put("id", "2"); lan2.put("ide", "XCode"); lan2.put("name","Swift"); JSONObject lan3 = new JSONObject(); lan3.put("id", "2"); lan3.put("ide", "Visual Studio"); lan3.put("name","C#"); //在將這3個對象存入一個數(shù)組 JSONArray array = new JSONArray(); array.put(lan1); array.put(lan2); array.put(lan3); //再將數(shù)組作為鍵"languages"的值,構(gòu)成一個對象 root.put("languages", array); //本例中只將內(nèi)容輸出出來 System.out.println(root.toString()); } catch (JSONException e) { e.printStackTrace(); }
讀取JSON數(shù)據(jù)
assets/test.json
{ "languages":[ {"id":1,"ide":"Eclipse","name":"Java"}, {"id":2,"ide":"XCode","name":"Swift"}, {"id":3,"ide":"Visual Studio","name":"C#"}, ], "cat","it" } try { InputStream is = getResources().getAssets().open("test.json"); InputStreamReader isr = new InputStreamReader(is, "UTF-8"); BufferedReader br = new BufferedReader(isr); //將文本中的數(shù)據(jù),都讀取到一個StringBuilder當(dāng)中 String line; StringBuilder builder = new StringBuilder(); while((line=br.readLine()) != null ){ builder.append(line); } br.close(); isr.close(); JSONObject root = new JSONObject(builder.toString()); //根據(jù)鍵,獲得鍵對應(yīng)的值,由于值是String類型,所以用getString System.out.println("cat="+root.getString("cat")); //根據(jù)鍵,獲得鍵對應(yīng)的數(shù)組,由于值是一個數(shù)組,所以用getJSONArray JSONArray array = root.getJSONArray("languages"); //由于要遍歷數(shù)組,所以創(chuàng)建一個for循環(huán) for(int i=0; i < array. length(); i++){ //由于每一個數(shù)組當(dāng)中的元素,也是一個新的JSON對象 JSONObject lan = array.getJSONObject(i); System.out.println("-------------------"); System.out.println("id="+lan.getInt("id")); System.out.println("ide="+lan.getString("name")); System.out.println("name="+lan.getString("name")); Log.i("tag","-------"); } } catch (IOException e) { e.printStackTrace(); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); }
相關(guān)文章
React Native學(xué)習(xí)之Android的返回鍵BackAndroid詳解
這篇文章主要給大家介紹了關(guān)于React Native學(xué)習(xí)之Android的返回鍵BackAndroid的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用React Native具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起看看吧。2017-10-10詳解Android平臺JSON預(yù)覽(JSON-handle)
這篇文章主要介紹了Android平臺JSON預(yù)覽(JSON-handle),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-09-09