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>
下面我們來編寫一個類來讀取,此類的作用是點擊按鈕后在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
創(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"的值,構成一個對象
root.put("languages", array);
//本例中只將內容輸出出來
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當中
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ù)鍵,獲得鍵對應的值,由于值是String類型,所以用getString
System.out.println("cat="+root.getString("cat"));
//根據(jù)鍵,獲得鍵對應的數(shù)組,由于值是一個數(shù)組,所以用getJSONArray
JSONArray array = root.getJSONArray("languages");
//由于要遍歷數(shù)組,所以創(chuàng)建一個for循環(huán)
for(int i=0; i < array. length(); i++){
//由于每一個數(shù)組當中的元素,也是一個新的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();
}
相關文章
React Native學習之Android的返回鍵BackAndroid詳解
這篇文章主要給大家介紹了關于React Native學習之Android的返回鍵BackAndroid的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用React Native具有一定的參考學習價值,需要的朋友們下面隨著小編來一起看看吧。2017-10-10
詳解Android平臺JSON預覽(JSON-handle)
這篇文章主要介紹了Android平臺JSON預覽(JSON-handle),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-09-09

