XML_JSON

XML

XML:可扩展标记语言,用来传输和储存数据


XML的语法规范

所有XML都须有关闭标签

<TextView></TextView>

<TextView/>

XML标签对大小写敏感

XML必须正确的嵌套


Android中XML的解析:

SAX(不常用)

DOM4J

PULL


DOM4J

DOM解析是把整篇XML文档都加在到内存中,然后使用DOM相关的API对某个或某些标签进行增删改查

PULL

PULL解析是使用事件驱动的方式,边读取边解析。当PULL解析器遇到文档中的某个节点时,

都会触发相应事件,我们可以捕获这些事件,并且在该时间点解析相关内容。


DOM4J比PULL解析浪费资源,但是API设计合理、简单。

PULL比较适合较大的XML文档解析。
DOM4J可以把文档内容都装入内存,然后可以获取
任意的标签及标签属性、文本等内容。



如何使用DOM4J解析XML?
1>导入jar包。
2>获取Document对象。
3>调用Document.getRootElement()获取根节点。
4>调用Element对象的相关API解析xml文件。


最常用的API:
SAXReader reader = new SAXReader();
Document doc = reader.read(...);
e=doc.getRootElement()
e.elements()  获取子标签集合
e.iterator()  获取迭代子标签的迭代器
e.getName()   标签名
e.getText()   标签文本
e.getTextTrim()  ....
......





PULL:
 PULL解析是使用事件驱动的方式,边读取边解析。
 当PULL解析器遇到文档中的某个节点时,都会触发
 相应事件,我们可以捕获这些事件,并且在该时间
 点解析相关内容。

如何使用PULL的方式解析xml?
1>创建xmlpull解析器:
  XmlPullParser parser = Xml.newPullParser();
  parser.setInput(is);
2>获取事件类型,并且配合while循环,不断驱动事件
  并且解析文档内容:
  int type=parser.getEventType();
  while(type != XmlPullParser.END_DOCUMENT){
     根据事件类型解析文档
     向后继续驱动事件
     type = parser.next();
  }

JSON
JSON是一款轻量级的数据交换格式


<user>
  <name>zs</name>
  <age>21</age>
  <gender>M</gender>
  <aihao>吃</aihao>
  <aihao>喝</aihao>
  <aihao>玩</aihao>
  <aihao>乐</aihao>
  <school>
    <name>tarena</name>
    <loc>bj</loc>
  </school>
</user>


{
  "name":"zs",
  "age":21,
  "gender":"M",
  "aihao":["吃","吃","吃","吃"],
  "school":{
     "name":"tarena",
     "loc":"bj"
  }
}

解析JSON需要两个类:
JSONObject : 描述一个JSON对象  {}
JSONArray : 描述一个JSON数组  []


如何解析JSONObject:
String json={
  "name":"zs",
  "age":21,
  "gender":"M",
  "aihao":["吃","吃","吃","吃"],
  "school":{
     "name":"tarena",
     "loc":"bj"
  }
}

JSONObject obj = new JSONObject(json);
String name=obj.getString("name");
obj.getInt("age");
JSONArray ary=obj.getJSONArray("aihao");
obj.getJSONObject("school").getString("loc");

解析JSONArray:
ary.length()  数组长度
ary.getString(0)  获取下标为0的字符串

["", 234, true, "", 2342]
ary.getInt(1)



[{},{},{},{},{},{}]

for(int i=0; i<ary.length(); i++){
  ary.getJSONObject(i);
  ......
}








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值