XML与JSON两种数据结构比较和各自底层实现

1.XML与JSON两种数据结构的优缺点

1> XML
 优点:?

  • 格式统一, 符合标准?
  • 容易与其他系统进行远程交互, 数据共享比较方便

? 缺点:

  • XML文件格式文件庞大, 格式复杂, 传输占用带宽?
  • 服务器端和客户端都需要花费大量代码来解析XML, 不论服务器端和客户端代码变的异常复杂和不容易维护
  • 客户端不同,浏览器之间解析XML的方式不一致, 需要重复编写很多代码?
  • 服务器端 和 客户端 解析XML花费资源和时间

2> JSON
 优点:?

  • 数据格式比较简单, 易于读写, 格式都是压缩的, 占用带宽小?
  • 易于解析这种语言
  • 支持多种语言, 包括ActionScript, C, C#, ColdFusion, Java, JavaScript, Perl, PHP, Python, Ruby等语言服务器端语言, 便于服务器端的解析?
  • 因为JSON格式能够直接为服务器端代码使用, 大大简化了服务器端和客户端的代码开发量, 但是完成的任务不变, 且易于维护?

 缺点:?

  • 没有XML格式这么推广的深入人心和使用广泛, 没有XML那么通用性?
  • JSON格式目前在Web Service中推广还属于初级阶段

2.JSON、XML解析方式的底层实现

 1> XML

  Xml两种解析方式,DOM 和 SAX。

  DOM 需要读入整个XML文档(文档驱动),SAX 是事件驱动的,并不需要读入整个文档,文档的读入过程也就是SAX的解析过程。

  SAX 简单地说就是对XML文档进行顺序扫描,当扫描到 文档 的 开始 与 结束 ,元素(element)的 开始 与 结束 时,就会触发相应的事件处理 函数,由事件处理函数做相应的动作,处理完后继续扫描,直到文档结束,则解析完毕

  DOM 解析XML文件时,会将XML文件的所有内容读取到内存中,然后允许你使用 DOM API 操作 XML 树。也就是说,DOM 会把XML以 树 的形式读取到内存中,然后在通过相应的 API 来操作这个 XML树,从而达到解析XML文件的目的

 2> JSON

  json底层原理 遍历字符串中的字符,最终根据特助字符,比如{},[],:号等进行区分,{}是字典,[]表示的是数组,:号是字典的键和值的分水岭,最后是将json数据转化为字典,然后使用 KVC 将字典转为 model

时间: 2024-10-12 20:48:15

XML与JSON两种数据结构比较和各自底层实现的相关文章

第十五讲.数据解析(XML与JSON两种数据解析)

一.XML数据解析 1.SAX:Simple API for XML.基于事件驱动的解析方式,逐行解析数据.(采用协议回调机制) NSXMLParser的解析方法: 1 #import "ViewController.h" 2 #import "Model.h" 3 4 @interface ViewController ()<NSXMLParserDelegate> 5 6 @property(nonatomic,strong)UITableView

解析XML文件的两种方式 SAX和DOM

1.数据解析 解析的基本概念 所谓“解析”:从事先规定好的格式中提取数据 解析的前提:提前约定好格式,数据提供方按照格式提供数据.数据获取方则按照格式获取数据 iOS开发常见的解析:XML解析.JSON解析 2.XML数据结构 XML:Extensible Markup language(可扩展标记语言),主流数据格式之一,可以用来存储和传输数据. XML数据格式的功能 数据交换 内容管理 用作配置文件 XML数据结构的语法 声明 节点使用一对标签表示:起始和结束标签. 根节点是起始节点,只有一

UI进阶 解析XML文件的两种方式 SAX和DOM

1.数据解析 解析的基本概念 所谓“解析”:从事先规定好的格式中提取数据 解析的前提:提前约定好格式,数据提供方按照格式提供数据.数据获取方则按照格式获取数据 iOS开发常见的解析:XML解析.JSON解析 2.XML数据结构 XML:Extensible Markup language(可扩展标记语言),主流数据格式之一,可以用来存储和传输数据. XML数据格式的功能 数据交换 内容管理 用作配置文件 XML数据结构的语法 声明 节点使用一对标签表示:起始和结束标签. 根节点是起始节点,只有一

placeholder和json两种实现登录隐藏的方法

<head> <title> placeholder和json两种实现登录隐藏的方法 </title> <script type="text/javascript"> //判断浏览器是否支持 placeholder属性 function isPlaceholder() { var input = document.createElement('input'); return 'placeholder' in input; } if (!i

Json两种解析方式

JSON数据解析的有点在于他的体积小,在网络上传输的时候可以更省流量,所以使用越来越广泛,下面介绍使用JsonObject和JsonArray的两种方式解析Json数据. 使用以上两种方式解析json均需要依赖json-lib.jar开发包使用依赖包 1.JsonObject 使用JsonObject解析只有一条数据的json是非常方便的例如:"{\"name\":\"zhangsan\",\"password\":\"zha

json两种结构

1.对象:对象在js中表示为"{}"括起来的内容,数据结构为 {key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字.字符串.数组.对象几种: 名称\值对 按照最简单的形式,可以用下面这样的 JSON 表示"名称 / 值对": 1 {"firstName":"Brett"

java生成解析xml的另外两种方法JAXB

JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术.该过程中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,并能将Java对象树的内容重新写到XML实例文档.从另一方面来讲,JAXB提供了快速而简便的方法将XML模式绑定到Java表示,从而使得Java开发者在Java应用程序中能方便地结合XML数据和处理函数. JAXBContext 类提供到 JAXB API 的客户端入口点.

理解json两种结构:数组和对象

Json是一种异常简单易懂的数据格式,关于json的规定,仅仅如下而已: 1) 并列的数据之间用逗号(", ")分隔. 2) 映射用冒号(": ")表示. 3) 并列数据的集合(数组)用方括号("[]")表示. 4) 映射的集合(对象)用大括号("{}")表示. 1. $arr = array(111,'aaa','bbb'); $arr1 = array( 'a' => 'aaa', 'b' => 222 );

mybais 的映射文件,需要从poviderDao.java 的一个 方法 public getProvidersFactors(参数 ) 中传入多个参数到providerDao.xml中的两种方法

方法一: 直接以对象的整体的形式去传入到xml文件中,当然这时候用过满足的条件是:你所想传入的所有的参数,应该都是包含在一个对象中的,此时可以以对象的形式去传入到xml中 如下图示例 实体类 private String id; private String companyName; private String managerName; private String phone; private String address; private String type; #ProviderDao