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

 更新时间:2016年03月22日 16:36:52   作者:chenlijian  
这篇文章主要介绍了Android App中读取XML与JSON格式数据的基本方法示例,Android中自带的JSONObject非常好用,需要的朋友可以参考下

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编程时需要注意的 web 问题

    几个Android编程时需要注意的 web 问题

    这篇文章主要介绍了几个Android编程时需要注意的 web 问题,需要的朋友可以参考下
    2014-12-12
  • Android开发中WebView的详细使用方法和常见操作

    Android开发中WebView的详细使用方法和常见操作

    这篇文章详细介绍了Android中WebView组件的使用方法和常见操作,包括基本初始化、启用JavaScript、处理页面导航、与JavaScript交互、加载本地HTML内容、文件上传与下载、进度条与加载指示、处理网页错误以及安全性设置,需要的朋友可以参考下
    2024-11-11
  • Android开发实例之多点触控程序

    Android开发实例之多点触控程序

    本文主要介绍 Android开发多点触控,这里提供了详细的资料和示例代码,以及实现效果图,有开发Android应用需要这样的功能的小伙伴可以参考下
    2016-08-08
  • Android 蓝牙开发实例解析

    Android 蓝牙开发实例解析

    本文主要介绍Android 蓝牙开发,这里提供实例代码和详细解析实现方法,对开发Android蓝牙开发的朋友提供简单示例,有需要的朋友可以参考下
    2016-08-08
  • Kotlin入门教程之开发环境搭建

    Kotlin入门教程之开发环境搭建

    最近kotlin大热,Kotlin作为 Android 领域的 Swift,绝对让你如沐春风,下面这篇文章主要给大家介绍了关于Kotlin入门教程之开发环境搭建的相关资料,文中将实现的方法一步步介绍的非常详细,需要的朋友可以参考下。
    2017-10-10
  • 理解关于Android系统中轻量级指针的实现

    理解关于Android系统中轻量级指针的实现

    由于android系统底层的很大的一部分是用C++实现的,C++的开发就难免会使用到指针的这个知识 点。而C++的难点和容易出问题的也在于指针。使用指针出错,常常会引发带来对项目具有毁灭性的错误,内存泄漏、逻辑错误、系统崩溃
    2021-10-10
  • Android动画之渐变动画(Tween Animation)详解 (渐变、缩放、位移、旋转)

    Android动画之渐变动画(Tween Animation)详解 (渐变、缩放、位移、旋转)

    这篇文章主要介绍了Android动画之渐变动画(Tween Animation)用法,结合实例形式详细分析了Android渐变动画Tween Animation实现渐变,缩放,位移,旋转等技巧,需要的朋友可以参考下
    2016-01-01
  • Android集成腾讯X5实现文档浏览功能

    Android集成腾讯X5实现文档浏览功能

    Android内部没有控件来直接显示文档,跳转WPS或其他第三方文档App体验性不好,使用腾讯X5内核能很好的解决的这一问题这篇文章主要介绍了Android集成腾讯X5实现文档浏览功能,需要的朋友可以参考下
    2019-10-10
  • eclipse中运行monkeyrunner脚本之环境搭建(4)

    eclipse中运行monkeyrunner脚本之环境搭建(4)

    这篇文章主要为大家详细介绍了eclipse中运行monkeyrunner脚本之环境搭建的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • Android使用SimpleDateFormat警告介绍

    Android使用SimpleDateFormat警告介绍

    大家好,本篇文章讲的是Android使用SimpleDateFormat警告介绍,感兴趣的同学快来看一看吧,希望对你起到帮助
    2021-11-11

最新评论