时间: 2009-01-09 / 分类: WEB后端编程 - 开发与实践 / 浏览次数: / 0 个评论 发表评论
Ajax中XML和JSON的一些简单比较
黄金分割与摄影构图
项目前端开发的架构
CSS Hack浏览器兼容IE6+IE7+IE8+IE9+FF
WEB前端开发中的一些编程风格和书...

 

的全称是eXtensible Markup Language ,即可扩展标记语言,作为一种广泛推广的数据传输的标准手段,在Ajax设想之初就被确定为XMLHttpRequest传输数据的方式,了解XML技术的本质对于我们更好地运用Ajax也是很有意义的。

对于所熟悉的超文本标记语言,XML也是一种类似的标记语言,不同的是,在HTML的标记是在标准中已经规定了有些什么标记,各种标记代表什么意义,如<p>代表一个段落,它控制着文档在浏览器中应该如何显示;而在XML中,标记以及标记的值是由我们自己定义的,但是,XML不像HTML那样会控制浏览器的显示,它其实只是用来封装数据,并不关心界面的显示如何,实际上我们最后控制界面的显示还是由HTML来控制的,在很长一段时间内我们还是会使用HTML来展示数据,而XML提供了一种可以使页面显示与数据分离的方法,这样为我们面向对象的模块化编程提供了方便。下面是一段XML文档。

<?xml version="1.0" encoding="utf-8" ?>
<person>
<name>Dr Li</name>
<sex>male</sex>
<age>24</age>
</person>

看到我们为文档的根节点定义为person,之下有name、sex、age三个子节点,从这一点可以看出,我们定义了一个XML文档之后,通过对文档标签的自定义,可以得到一个很具结构化并具有一定意义的数据文档,这为我们提供了一种很便捷的方式来包裹和交换数据。

var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");//声明一个XML对象
xmlDoc.async="false";//是否与数据源同步
xmlDoc.load("XML文档.xml");//读取XML文档
nodes = xmlDoc.documentElement.childNodes;//获取节点对象
document.getElementById("name").innerText = nodes.item(0).text;
//为DOM节点赋值
document.getElementById("sex").innerText = nodes.item(1).text;
document.getElementById("age").innerText = nodes.item(2).text;

在使用XMLHttpRequest发出请求以后,在服务端可以使程序返回一个XML文档,然后在前端脚本中解析XML,并使用DOM方法改变界面显示。

:它的名字看起来似乎很亲切,全称为JavaScript Object Notation,可以看出它和JavaScript的关系非常密切。JSON是一种与JavaScript自然匹配的对象,它实际上是一种名称与值的集合,我们使用JavaScript中通常的对象访问方法就能对对象进行访问。

         var jobj = {"person":{"name":"Dr Li","sex":"male","age":"24"}}
//声明一个JSON对象
document.getElementById("name").innerText = jobj.person.name;
//为DOM节点赋值
document.getElementById("sex").innerText = jobj.person.sex;
document.getElementById("age").innerText = jobj.person.age;

通过大括号、冒号、逗号、引号等符号实例了一个JSON对象,每个冒号左边的是键,右边是值,JSON对象实际上就是一个键值对的集合。可以方便地通过类似jobj.person.name的方式访问对象中的每一个键对应的值。

还发现JSON对象相对于XML更为简洁,XML必须是封闭的标签对,而JSON只需要用一个打括号或者逗号就能说明元素的作用范围。这一点对于需要高效运行的Ajax是很重要的,一般来说使用JSON要比XML更节约带宽一些。

JSON在JavaScript中的灵活性与易用性,使得大多数Ajax编程人员都更愿意使用JSON作为Ajax传输数据的方法。

 

小结:[  XML ]

使用XML作为传输格式的优势:

1. 格式统一, 符合标准

2. 容易与其他系统进行远程交互, 数据共享比较方便

缺点:

1. XML文件格式文件庞大, 格式复杂, 传输占用带宽

2. 服务器端和客户端都需要花费大量代码来解析XML, 不论服务器端和客户端代码变的异常复杂和不容易维护

3. 客户端不同浏览器之间解析XML的方式不一致, 需要重复编写很多代码

4. 服务器端和客户端解析XML花费资源和时间

[ JSON ]

那么除了XML格式, 还有没有其他格式, 有一种叫做JSON (Javascrīpt Object Notation) 的轻量级数据交换格式能够替代XML的工作.

优点:

1. 数据格式比较简单, 易于读写, 格式都是压缩的, 占用带宽小

2. 易于解析这种语言, 客户端Javascrīpt可以简单的通过eval()进行JSON数据的读取

3. 支持多种语言, 包括Actionscrīpt, C, C#, ColdFusion, Java, Javascrīpt, Perl, PHP, Python, Ruby等语言服务器端语言, 便于服务器端的解析

4. 在PHP世界, 已经有PHP-JSON和JSON-PHP出现了, 便于PHP序列化后的程序直接调用. PHP服务器端的对象、数组等能够直接生JSON格式, 便于客户端的访问提取.

   另外PHP的PEAR类已经提出了支持 (http://pear.php.net/pepr/pepr-proposal-show.php?id=198)

5. 因为JSON格式能够直接为服务器端代码使用, 大大简化了服务器端和客户端的代码开发量, 但是完成的任务不变, 且易于维护

缺点:

1. 没有XML格式这么推广的深入人心和使用广泛, 没有XML那么通用性

2. JSON格式目前在Web Service中推广还属于初级阶段

可读性 

  JSON和XML的可读性可谓不相上下,一边是建议的语法,一边是规范的标签形式,很难分出胜负。 
  ·可扩展性 
  XML天生有很好的扩展性,JSON当然也有,没有什么是XML能扩展,JSON不能的。 
  ·编码难度 
  XML有丰富的编码工具,比如Dom4j、JDom等,JSON也有json.org提供的工具,但是JSON的编码明显比XML容易许多,即使不借助工具也能写出JSON的代码,可是要写好XML就不太容易了。 
  ·解码难度 
  XML的解析得考虑子节点父节点,让人头昏眼花,而JSON的解析
难度几乎为0。这一点XML输的真是没话说。 
  ·流行度 
  XML已经被业界广泛的使用,而JSON才刚刚开始,但是在Ajax这个特定的领域,未来的发展一定是XML让位于JSON。到时Ajax应该变成Ajaj (Asynchronous JavaScript and JSON)了。 
虽然说json的好处有很多,但归根到底 xml还是很好很强大的东西……

      站点地图 | 关于我 | 返回顶部
    Copyright © 2001-2013 { amiku.cn | zhangshunjin.com }. Powered by 

    阿米酷

    张顺金


    浙ICP备11002820号-1