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

作者:chenlijian 时间:2023-07-19 10:02:56 

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();
 }

   

标签:Android,XML,JSON
0
投稿

猜你喜欢

  • JAVA中实现链式操作(方法链)的简单例子

    2022-12-16 00:54:50
  • Java jar打包工具使用方法步骤解析

    2023-07-01 12:26:47
  • Android自定义实现图片加文字功能

    2022-08-03 22:05:49
  • SpringBoot集成EasyExcel的应用场景分析

    2023-01-09 07:47:45
  • Spring Security内置过滤器的维护方法

    2022-07-30 18:10:16
  • 算法练习之从String.indexOf的模拟实现开始

    2023-02-23 09:20:40
  • Java常用内置注解用法分析

    2023-11-24 04:53:46
  • SpringBoot 2.x 整合Lombok的方法示例

    2022-03-15 17:43:35
  • java9新特性Collection集合类的增强与优化方法示例

    2023-01-29 05:16:57
  • Java和Dubbo的SPI机制原理解析

    2023-01-29 05:21:45
  • Eclipse+Java+Swing实现学生成绩管理系统的实例代码

    2022-12-14 15:35:04
  • MybatisPlus如何自定义TypeHandler映射JSON类型为List

    2023-08-08 14:05:38
  • Java Comparable和Comparator对比详解

    2022-08-13 01:28:08
  • C#实现聊天窗体以及抖动

    2021-06-07 10:40:50
  • JAVA Integer类常用方法解析

    2021-09-01 06:51:08
  • Android下拉刷新官方版

    2021-11-25 06:52:51
  • SpringBoot实现二维码扫码登录的原理及项目实践

    2022-02-25 22:31:15
  • C# Winform自动更新程序实例详解

    2021-12-06 05:52:57
  • 使用Java反射模拟实现Spring的IoC容器的操作

    2023-06-03 17:37:42
  • java图的深度优先遍历实现随机生成迷宫

    2023-06-26 06:06:05
  • asp之家 软件编程 m.aspxhome.com