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

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

相关推荐

  • android调用国家气象局天气预报接口json数据格式解释

    国家气象局提供了三种数据的形式 网址在: http://www.weather.com.cn/data/sk/101010100.html http://www.weather.com.cn/data/cityinfo/101010100.html http://m.weather.com.cn/data/101010100.html 最后一种是解析最全面的. 数据解析格式: 第一个网址提供的json数据为: 复制代码 代码如下: {"weatherinfo":{"city&

  • Android网络编程之获取网络上的Json数据实例

    为要获取网络上的Json所以需要服务器端提供的支持. 一.创建服务器端: 服务器端项目结构: 服务器端运行效果图: 第一步:创建业务所需的JavaBean 复制代码 代码如下: package com.jph.sj.model;   import java.util.Date;   /**  * 新闻实体类  * @author jph  * Date:2014.09.26  */ public class News {     private Integer id;     private S

  • android客户端从服务器端获取json数据并解析的实现代码

    首先客户端从服务器端获取json数据 1.利用HttpUrlConnection 复制代码 代码如下: /**      * 从指定的URL中获取数组      * @param urlPath      * @return      * @throws Exception      */     public static String readParse(String urlPath) throws Exception {                  ByteArrayOutputSt

  • Android中Json数据读取与创建的方法

    首先介绍下JSON的定义,JSON是JavaScript Object Notation的缩写. 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式,获得了当今大部分语言的支持),从而可以在不同平台间进行数据交换.JSON采用兼容性很高的文本格式,同时也具备类似于C语言体系的行为. JSON的结构: (1) Name/Value Pairs(无序的):类似所熟知的Keyed list. Hash table.Disctiona

  • Android开发使用json实现服务器与客户端数据的交互功能示例

    本文实例讲述了Android开发使用json实现服务器与客户端数据的交互功能.分享给大家供大家参考,具体如下: 第一步:写一个远程查询工具类,使用单例模式 /** * 查询远程服务器的工具 * @author chen.lin * */ public class QueryUtils { //private static final String TAG = "CommonUtils"; private static QueryUtils instance; private Share

  • android解析JSON数据

    JSONObject的使用 一. JSON对象的使用: String content = "{'username': 'linux', 'password': '123456'}"; JSONObject jsonObject = new JSONObject(content); String username = jsonObject.getString("username"); String password = jsonObject.getString(&qu

  • Android中Retrofit 2.0直接使用JSON进行数据交互

    之前使用Retrofit都是将JSON串转化为POJO对象,针对不同的业务协议,定义相应的接口和参数列表.但是此种方式一般用在自己内部协议基础上,具体大的项目中,有些第三方的集成功能,一般都采用统一的方式即请求JSON和回应JSON进行数据交互,不可能每个第三方协议都会去定义与协议相应的POJO对象. HTTP肯定有GET和POST方法,先定义Retrofit Api的interface: package com.hdnetworklib.network.http; import java.ut

  • Android中使用Gson解析JSON数据的两种方法

    Json是一种类似于XML的通用数据交换格式,具有比XML更高的传输效率. 从结构上看,所有的数据(data)最终都可以分解成三种类型: 第一种类型是标量(scalar),也就是一个单独的字符串(string)或数字(numbers),比如"北京"这个单独的词. 第二种类型是序列(sequence),也就是若干个相关的数据按照一定顺序并列在一起,又叫做数组(array)或列表(List),比如"北京,上海". 第三种类型是映射(mapping),也就是一个名/值对(

  • Android访问php取回json数据实例

    php代码 复制代码 代码如下: $array = array( 'username'=>'杨铸', 'password'=>'123456', 'user_id'=>1 ); echo json_encode($array); java代码 复制代码 代码如下: private void startUrlCheck(String username,String password) { HttpClient client = new DefaultHttpClient(); String

  • android针对json数据解析方法实例分析

    本文实例讲述了android针对json数据解析方法.分享给大家供大家参考.具体如下: JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据交换.JSON采用兼容性很高的文本格式,同时也具备类似于C语言体系的行为. – Json.org JSON Vs XML 1.JSON和XML的数据可读性基本相同 2.JSON和XML同样拥有丰富的解析手段 3.

随机推荐