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(); }
本文地址:https://www.stayed.cn/item/10048
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我