XML与JSON的比较
来源:互联网 发布:mg动画用什么软件 编辑:程序博客网 时间:2024/05/22 05:01
简介
XML(eXtensible Markup Language,可扩展标记语言),是一种标记语言。XML是从SGML(The Standard Generalized Markup Language,标准通用标记语言)中简化修改出来的。XML被设计用来传输和存储数据。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成。它是基于JavaScript Programming Language, Standard ECMA-262 3rd Edition的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。
JSON具有以下这些形式:
对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。
数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。
值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array)。这些结构可以嵌套。
XML与JSON的对比
两者都是文本表示的数据格式,可以跨平台、跨系统交换数据。XML适合标记文档,但是JSON是数据交互的理想格式。两者最大的不同在于,XML是一个完整的标记语言,而JSON不是。XML利用标记语言的特性提供了绝佳的延展性(如XPath),在数据存储,扩展及高级检索方面优势明显,而JSON则由于比XML更加小巧,以及浏览器的内建快速解析支持,使得其更适用于网络数据传输领域。
就可读性而言,两者都具备很好的可读性,但XML文档的可读性更高。
就数据表示和传输性能而言,JSON明显比XML简洁,格式简单,占用带宽少。
示例
示例1
用XML格式表示中国部分省市数据:<?xml version="1.0" encoding="utf-8" ?><country> <name>中国</name> <province> <name>黑龙江</name> <citys> <city>哈尔滨</city> <city>大庆</city> </citys> </province> <province> <name>广东</name> <citys> <city>广州</city> <city>深圳</city> <city>珠海</city> </citys> </province></country>用JSON格式表示中国部分省市数据:
var country ={ name: "中国", provinces: [ { name: "黑龙江", citys: { city: ["哈尔滨", "大庆"]} }, { name: "广东", citys: { city: ["广州", "深圳", "珠海"]} } ]}
示例2
用XML格式表示地址簿:<?xml version='1.0' encoding='UTF-8'?><card> <fullname>Sean Kelly</fullname> <org>SK Consulting</org> <emailaddrs> <address type='work'>kelly@seankelly.biz</address> <address type='home' pref='1'>kelly@seankelly.tv</address> </emailaddrs> <telephones> <tel type='work' pref='1'>+1 214 555 1212</tel> <tel type='fax'>+1 214 555 1213</tel> <tel type='mobile'>+1 214 555 1214</tel> </telephones> <addresses> <address type='work' format='us'>1234 Main StnSpringfield, TX 78080-1216</address> <address type='home' format='us'>5678 Main StnSpringfield, TX 78080-1316</address> </addresses> <urls> <address type='work'>http://seankelly.biz/</address> <address type='home'>http://seankelly.tv/</address> </urls></card>用JSON格式表示地址簿:
var card ={ "fullname": "Sean Kelly", "org": "SK Consulting", "emailaddrs": [ {"type": "work", "value": "kelly@seankelly.biz"}, {"type": "home", "pref": 1, "value": "kelly@seankelly.tv"} ], "telephones": [ {"type": "work", "pref": 1, "value": "+1 214 555 1212"}, {"type": "fax", "value": "+1 214 555 1213"}, {"type": "mobile", "value": "+1 214 555 1214"} ], "addresses": [ {"type": "work", "format": "us", "value": "1234 Main StnSpringfield, TX 78080-1216"}, {"type": "home", "format": "us", "value": "5678 Main StnSpringfield, TX 78080-1316"} ], "urls": [ {"type": "work", "value": "http://seankelly.biz/"}, {"type": "home", "value": "http://seankelly.tv/"} ]}
http://www.cnblogs.com/SanMaoSpace/p/3139186.html
http://www.cnblogs.com/lostyue/archive/2012/04/27/2472956.html
附录:
XML、XSL、XSD的区别:
XML(eXtensible Markup Language,可扩展标记语言)
XSL(eXtensible Stylesheet Language,扩展样式表语言),XSL之于XML,就像CSS之于HTML。用于以可读格式呈现XML数据。
XSL包括三部分:
XSLT
一种用于转换XML文档的语言。
XPath
一种用于在XML文档中导航的语言。
XSL-FO
一种用于格式化XML文档的语言。
XSD(XML Schemas Definition,XML结构定义),通过XSD校验XML。
Java解析XML的方法:
基本的解析方式有两种,一种叫SAX,另一种叫DOM。SAX是基于事件流的解析,DOM是基于XML文档树结构的解析。
DOM解析 -
优点:整个文档树在内存中,便于操作;支持删除、修改、重新排列等多种功能;
缺点:将整个文档调入内存(包括无用的节点),浪费时间和空间;
使用场合:一旦解析了文档还需多次访问这些数据;硬件资源充足(内存、CPU)。
SAX解析 -
优点:不用事先调入整个文档,占用资源少;SAX解析器代码比DOM解析器代码小,适于Applet,下载。
缺点:不是持久的;事件过后,若没保存数据,那么数据就丢了;无状态性;从事件中只能得到文本,但不知该文本属于哪个元素;
使用场合:Applet;只需XML文档的少量内容,很少回头访问;机器内存少;
Java解析XML的4种经典方法:
1. DOM生成和解析XML(w3c-dom.jar)
2. SAX生成和解析XML(sax2.jar,2004年后已停止更新)
3. DOM4J生成和解析XML(dom4j.jar,支持DOM方式和SAX方式解析 - DOMReader、SAXReader)
4. JDOM生成和解析XML(jdom.jar)
dom4j处理带命名空间的XML - 使用XPath
Java构造和解析Json数据的两种方法:org.json和json-lib
json-lib和org.json的使用几乎是相同的,区别有两点:
(1) org.json比json-lib要轻量得多,前者没有依赖任何其他jar包,而后者要依赖ezmorph和commons的lang、logging、beanutils、collections等组件
(2) json-lib在构造bean和解析bean时比org.json要方便的多,json-lib可直接与bean互相转换,而org.json不能直接与bean相互转换而需要map作为中转,若将bean转为json数据,首先需要先将bean转换为map再将map转为json,比较麻烦。
在线JSON校验格式化工具 http://www.bejson.com/
JSONPath/XPath语法
java.lang.NoClassDefFoundError: org/jaxen/JaxenException解决方法
在使用dom4j的xpath时出现java.lang.NoClassDefFoundError: org/jaxen/JaxenException的异常,原因是dom4j引用了jaxen jar包,而在项目中没有引用此jar包,引用此jar包即可解决问题,如果你用了maven,在pom.xml中添加如下配置就可以了:
<dependency><groupId>jaxen</groupId><artifactId>jaxen</artifactId><version>1.1.4</version><exclusions><exclusion> <groupId>xerces</groupId> <artifactId>xercesImpl</artifactId></exclusion></exclusions></dependency><dependency><groupId>dom4j</groupId><artifactId>dom4j</artifactId><version>1.6.1</version></dependency>jaxen是一个用Java开发的XPath 引擎,支持JDOM, dom4j 等,其项目位置: http://jaxen.org/。
- JSON 与 xml的比较
- XML与JSON的比较
- JSON与XML的比较
- JSON与XML的比较
- XML与JSON的比较
- JSON与XML的比较
- JSON与XML的比较
- JSON与XML的比较
- json与XML的比较
- xml 与json 的比较
- XML与JSON的比较
- XML与JSON的比较
- JSON与XML比较
- XML与JSON比较
- JSON与XML比较
- JSON与XML比较
- Json与Xml比较
- 简单XML与JSON的读取比较
- IOS 开发学习七 二维码扫描功能(ZBar SDK)
- 设计模式之面向对象与类基础特征概念
- android shape的使用
- Windows Phone 数据的保存和恢复
- Chrome手机调试(WebView或如Hbuilder开发的Web App)
- XML与JSON的比较
- 三分钟教你学Git (九) 之 新建分支错误
- C#中Invoke的用法
- Servlet 3.0 新特性详解
- 安装完毕后VS2012(2013)中找不到ADO.NET Entity Data Model模板或 sql server database project模板
- centos 6.5下mongodb的安装
- Windows Phone 边框效果
- 【iOS】Associative机制:Category功能增强
- LoadRunner12 录制web脚本Action.c为空解决办法