国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android App中讀取XML與JSON格式數據的基本方法示例

2020-01-02 06:59:10
字體:
來源:轉載
供稿:網友

XML
假如有這樣一個XML格式的數據:

<?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>

下面我們來編寫一個類來讀取,此類的作用是點擊按鈕后在EditView上顯示資源文件(一個XML)中的內容,此例中會使用到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);   // 變量在內部類中使用的前提是此變量必須是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 {         // 判斷是否到了文件的結尾         while (xrp.getEventType() != XmlResourceParser.END_DOCUMENT) {           //文件的內容的起始標簽開始,注意這里的起始標簽是test.xml文件里面<resources>標簽下面的第一個標簽           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
創建JSON數據

try {    //首先創建對象中的一個單個鍵值對    JSONObject root = new JSONObject();    root.put("cat", "it");    //另一個鍵值對的值是一個數組,數組里裝了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個對象存入一個數組    JSONArray array = new JSONArray();    array.put(lan1);    array.put(lan2);    array.put(lan3);    //再將數組作為鍵"languages"的值,構成一個對象    root.put("languages", array);    //本例中只將內容輸出出來    System.out.println(root.toString());  } catch (JSONException e) {    e.printStackTrace();  }

讀取JSON數據
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);    //將文本中的數據,都讀取到一個StringBuilder當中    String line;    StringBuilder builder = new StringBuilder();    while((line=br.readLine()) != null ){      builder.append(line);    }    br.close();    isr.close();    JSONObject root = new JSONObject(builder.toString());    //根據鍵,獲得鍵對應的值,由于值是String類型,所以用getString    System.out.println("cat="+root.getString("cat"));    //根據鍵,獲得鍵對應的數組,由于值是一個數組,所以用getJSONArray    JSONArray array = root.getJSONArray("languages");    //由于要遍歷數組,所以創建一個for循環    for(int i=0; i < array. length(); i++){      //由于每一個數組當中的元素,也是一個新的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();  }

   

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 垫江县| 承德县| 岳阳市| 山阳县| 庄浪县| 宁远县| 永清县| 扬中市| 江孜县| 南开区| 栾城县| 奉新县| 海南省| 开封市| 兰考县| 赞皇县| 商河县| 鄂托克前旗| 南皮县| 金堂县| 湘西| 宜良县| 镇赉县| 于田县| 扬州市| 岱山县| 娄底市| 玉溪市| 田林县| 宜阳县| 常州市| 屏东县| 巨鹿县| 九龙城区| 津南区| 兴化市| 太仓市| 温州市| 西峡县| 兴山县| 大邑县|