XML:可扩展标记语言       JSON:轻量级的数据交换格式

区别:

  1.可读性方面:基本相同,Xml的可读性较好些;

  2.可扩展性方面:都有较好的扩展性;

  3.编码难度方面:json的编码较容易些;

  4.解码难度:json的解码难度基本为0,xml需要考虑子节点和父节点;

  5.数据体积方面:json相对于xml来讲,数据体积小,传递的速度会快些;

  6.数据交互方面:json与JavaScript的交互更加方便,更容易解析处理,交互也会更好;

  7.数据描述方面:xml对数据描述性较好;

  8.传输速度方面:json的速度远远大于xml。

底层原理:

JSON底层原理:

遍历字符串中的字符,最终根据格式规定的特殊字符,比如{},[],:,等进行区分。{}是一个字典的开始,[]是一个数组的开始,:是字典的键和值的分水岭,最终结果是讲json数据转化为字典,字典中的值可能是字典,数组,字符串。

XML底层原理:

xml解析常用的解析方法有两种:DOM和SAX解析。

DOM解析采用建立树形结构的方式访问xml文档,而SAX采用事件模型。DOM解析把xml文档转化成为一个包含其内容的树,并可以对树进行遍历。使用DOM解析时需要处理整个xml文档,所以对性能和内存的要求比较高。SAX解析xml文档时可以触发一系列的事件,当发现给定的tag的时候,它可以激活一个回调方法,告诉该方法制定的标签已经找到。SAX对内存要求较低,因为它让开发人员自己决定所要处理的tag。

转载Json和Xml的区别,以及它们的底层是如何处理的的更多相关文章

  1. iOS - 分析JSON、XML的区别和解析方式的底层是如何实现的(延伸实现原理)

    <分析JSON.XML的区别,JSON.XML解析方式的底层是如何实现的(延伸实现原理)> (一)JSON与XML的区别: (1)可读性方面:基本相同,XML的可读性比较好: (2)可扩展 ...

  2. JSON与XML的区别比较(转)

    原文链接:JSON与XML的区别比较 1.定义介绍 (1).XML定义扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以 ...

  3. JSON与XML的区别比较

    1.定义介绍 (1).XML定义扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许 ...

  4. JSON与XML的区别

    1.定义介绍 (1).XML定义扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许 ...

  5. [转]JSON与XML的区别比较

    1.定义介绍 (1).XML定义扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许 ...

  6. 什么是json? 什么是xml?JSON与XML的区别比较

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它使得人们很容易的进行阅读和编写.同时也方便了机器进行解析和生成.它是基于 JavaScript Prog ...

  7. Andriod项目开发实战(2)——JSON和XML的区别

    详情见: 1.http://www.cnblogs.com/SanMaoSpace/p/3139186.html 2.http://www.cnblogs.com/yank/p/4028266.htm ...

  8. JSON和XML的区别

  9. json和xml的两者区别

    服务器端返回给客户端的数据一般都是JSON格式,JSON数据以键值的形式保存,数据之间以逗号分隔,{}表示对象,[]表示数组.JSON数据解析方案有四种,JSONKit,SBJson,TouchJso ...

随机推荐

  1. boot asio 非阻塞同步编程---非阻塞的accept和receive。

    boot asio 非阻塞同步编程---非阻塞的accept和receive. 客户端编程: #include<boost/timer.hpp> #include <iostream ...

  2. HashSet中是如何判断元素是否重复的

    HashSet不能添加重复的元素,当调用add(Object)方法时候, 首先会调用Object的hashCode方法判hashCode是否已经存在,如不存在则直接插入元素: 如果已存在则调用Obje ...

  3. Java中Return和Finally执行顺序的实现

    下面这段代码的执行结果是怎样的呢? publc int test(){ int x; try{ x = 1; return x; }catch(Exception e){ x = 2; return ...

  4. 11-23网页基础--JavaScript基础知识

    第一课 JavaScript简介 一.定义:JavaScript是脚本语言,需要宿主文件,它的宿主文件是html文件. JavaScript 是一种轻量级的编程语言. JavaScript 是可插入 ...

  5. 问题:table 可否实现对角线;结果:HTML 斜线 表头

    <HTML> <HEAD> <TITLE>斜线表头</TITLE>    </HEAD> <script    Language=&q ...

  6. leetcode657

    bool judgeCircle(string moves) { ;//垂直位移 ;//水平位移 for (auto m : moves) { if (m == 'U') { V++; } else ...

  7. Tkinter控件(python GUI)

  8. C++的继承与接口

    1.继承方式 三种继承方式,public,private,protected.注意,继承方式是相对于某一层类的方法而言,并不是相对于子类的对象而言.对于外部世界()对象来说,protected和pri ...

  9. CentOS 7 下设置DNS

    在CentOS 7下,手工设置 /etc/resolv.conf 里的DNS,过了一会,发现被系统重新覆盖或者清除了.和CentOS 6下的设置DNS方法不同,有几种方式: 1.使用全新的命令行工具 ...

  10. Codeforces #345div1 C Table Compression (650C) 并查集

    题意:给你一个n*m的矩阵,需要在不改变每一行和每一列的大小关系的情况下压缩一个矩阵,压缩后的矩阵所有数的总和尽量的小. 思路:我们有这样的初步设想:对于在一行或一列的数x,y,若x<y,则建立 ...