xml
假如有这样一个xml格式的数据:
1
2
3
4
5
6
|
<?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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
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数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
{ "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(); } |