Android App中读取XML与JSON格式数据的基本方法示例

前端技术 2023/09/04 Android

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

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。