JSON和XML
在我学习前端的时候,推荐学习路线里面没有XML背影,后台写的接口也全是JSON数据格式,于是淡化了XML数据格式,最近看了JS高程和自己了解了一点XML,于是想给自己大致总结一下XML和JSON的一些差距和用法
JSON:
借鉴一下别人总结的优缺点:
<1>.JSON的优点:
A.数据格式比较简单,易于读写,格式都是压缩的,占用带宽小;
B.易于解析,客户端JavaScript可以简单的通过eval()进行JSON数据的读取;
C.支持多种语言,包括ActionScript, C, C#, ColdFusion, Java, JavaScript, Perl, PHP, Python, Ruby等服务器端语言,便于服务器端的解析;
D.在PHP世界,已经有PHP-JSON和JSON-PHP出现了,偏于PHP序列化后的程序直接调用,PHP服务器端的对象、数组等能直接生成JSON格式,便于客户端的访问提取;
E.因为JSON格式能直接为服务器端代码使用,大大简化了服务器端和客户端的代码开发量,且完成任务不变,并且易于维护。
<2>.JSON的缺点
A.没有XML格式这么推广的深入人心和喜用广泛,没有XML那么通用性;
B.JSON格式目前在Web Service中推广还属于初级阶段
JSON数据格式(对象+数组):
{ name:"Shmily", // 这里的name是一个对象,值是Shimily sex:"man", // 这里的sex是一个对象,值是man friend:[ // 这里的friend是一个对象数组 { name:"Emily", // friend数组的第一项的name对象 sex:"woman" // friend数组的第一项的sex对象 }, { name:"Bob", // 同理这是friend对象数组的第二项的一个name对象 sex:"man" // ...... } ] } // 总体来说,JSON格式可以理解为数组+对象的一种格式 ,易于读取
JS中,JSON的序列化和解析:
序列化:
*******JSON格式序列化,JSON格式数据转为普通字符串************* // 这里的me是一个JSON格式的数据,例如我上面写的JSON格式 var jsonText = JSON.stringify(me);
// 一般从后台获取的JSON格式的数据,先要转为普通字符串格式,再进行访问利用
// 转化为字符串之后访问也很方便:
// friend[0].name —— Emily
// friend[1].sex —— woman
解析:
**************** JSON的解析********************* // 将一个普通字符串格式转为JSON格式,该字符串格式也是数组+对象的一种格式,不是任意的字符串格式 var jsonObj = JSON.parse(jsonText);
XML:
xml的优缺点,借鉴一下别人的总结:
<1>.XML的优点
A.格式统一,符合标准;
B.容易与其他系统进行远程交互,数据共享比较方便。
<2>.XML的缺点
A.XML文件庞大,文件格式复杂,传输占带宽;
B.服务器端和客户端都需要花费大量代码来解析XML,导致服务器端和客户端代码变得异常复杂且不易维护;
C.客户端不同浏览器之间解析XML的方式不一致,需要重复编写很多代码;
D.服务器端和客户端解析XML花费较多的资源和时间。
XML格式:
<?xml version="1.0" encoding="ISO-8859-1"?> <note> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting!</body> </note>
DOM格式的解析和序列化:
在 XML 文档对象模型 (DOM) 中,每个节点都是一个对象。
对象拥有方法(功能)和属性(关于对象的信息),并可通过 JavaScript 进行访问和操作。
三个重要的 XML DOM 节点属性是:nodeName、nodeValue、nodeType
注:详情请看W3C ———— http://www.w3school.com.cn/xmldom/dom_nodes_info.asp
var a = '<note><to>George</to><from>John</from><heading>Reminder</heading><body>Don"t forget the meeting!</body></note>'; // 解析成XML格式 var b = new DOMParser(); var c = b.parseFromString(a,"text/xml"); // 序列成字符串格式 var z = new XMLSerializer(); var d = z.serializeToString(c); //访问XML格式的节点 var x = c.getElementsByTagName("note")[0].childNodes[0]; x.nodeName // to x.nodeValue // George x.nodeType // 1
由于自己XML格式接触不多,所以肯定有很多不足,以后慢慢修补。