1.这个东西的规则比较简单,并且人眼看起来也比较容易理解,结构上也比较好操作,并且并无与任何编程语言绑定。

所以,很多编程语言就都为XML这个东西编写了读写XML的库,所以XML看起来所谓的通用,其实主要不是因为本身通用,而是因为XML本身的特点导致很多人愿意编写操作XML的相关的库,于是就“通用”了。

2.语法规则,简单的特性直接导致了她另一方面的问题。即信息密度太低,同样的信息量需要的文本长度更长。

3.提供了一种描述事物的方法,而且这种方法能够表述列表、树等常见的数据结构,可扩展性好。

4.用纯文本语言书写,人们可以读懂内容,也可以自行修改里面的内容是树形结构,关于书有很多非常成熟的算法描述和操作。

5.用纯文本保存结构化数据是xml最大的优点。

6.xml文件可以自由定义属性和层次关系,使用中可以比较灵活的反应对象的信息。

7.XML是第一代人和机器都能读懂的语言,That's all

8.XML 有一套工具,用来存储和操作数据。它提供了解释(Parser),验证(DTD,schema),查询(XQuery),变换(XSLT)。每个工具都帮你处理了大量令人头痛的问题。

需要存储和操作数据吗?请使用 XML。

9.XML就是给各种事物加标签,以达到完整的表述事物的属性。

就像在街上看到男的就加上<高帅富>、<屌丝>的标签,看到女的就加上<1分>、<6分>、<10分>等标签。大家看的时候就一目了然。

10.解决了“如何来表示一些信息”这个问题。

11.简单概括(可能概括的不是很准确,但是我的语言功底也就到这了,见谅)的话就是,xml本身是一种格式规范,是一种包含了数据以及数据说明的文本格式规范。

举例:

比如,我们要给对方传输一段数据,数据内容是“too young,too simple,sometimes naive”,要将这段话按照属性拆分为三个数据的话,就是,年龄too young,阅历too simple,结果sometimes naive。

我们都知道程序不像人,可以体会字面意思,并自动拆分出数据,因此,我们需要帮助程序做拆分,因此出现了各种各样的数据格式以及拆分方式。

比如,可以是这样的

数据为“too young,too simple,sometimes naive”

然后按照逗号拆分,第一部分为年龄,第二部分为阅历,第三部分为结果。

也可以是这样的

数据为“too_young**too_simple*sometimes_naive”

从数据开头开始截取前面十一个字符,去掉*号并把下划线替换为空格作为第一部分,再截取接下来的十一个字符同样去掉*并替换下划线为空格作为第二部分,最后把剩下的字符同样去*号体会空格作为第三部分。

这两种方式都可以用来容纳数据并能够被解析,但是不直观,通用性也不好,而且如果出现超过限定字数的字符串就容纳不了,也可能出现数据本身就下划线字符导致需要做转义。

基于这种情况,出现了xml这种数据格式, 上面的数据用XML表示的话

可以是这样

<person age="too young" experience="too simple" result="sometimes naive" />

也可以是这样

<person>

<age value="too young" />

<experience value="too simple" />

<result value="sometimes naive" />

</person>

两种方式都是xml,都很直观,附带了对数据的说明,并且具备通用的格式规范可以让程序做解析。

如果用json格式来表示的话,就是下面这样

{

"age":"too young",

"experience":"too simple",

"result":"sometimes naive"

}

看出来没,其实数据都是一样的,不同的只是数据的格式而已,同样的数据,我用xml格式传给你,你用xml格式解析出三个数据,用json格式传给你,你就用json格式解析出三个数据,还可以我本地保存的是xml格式的数据,我自己先解析出三个数据,然后构造成json格式传给你,你解析json格式,获得三个数据,再自己构造成xml格式保存起来,说白了,不管是xml还是json,都只是包装数据的不同格式而已,重要的是其中含有的数据,而不是包装的格式。(来源:https://www.zhihu.com/question/31353595/answer/60826602)

最新文章

  1. iOS可视化动态绘制八种排序过程
  2. C#基础:飞行棋游戏
  3. Oralce 重建EM服务,OracleDBConsoleOracle
  4. 【转】关于Class.getResource和ClassLoader.getResource的路径问题
  5. 使用jQuery Mobile和Phone Gap开发Android应用程序
  6. sql表命名规范
  7. Linux用户和用户组管理总结
  8. 老李分享:《Linux Shell脚本攻略》 要点(二)
  9. 最牛分布式消息系统:Kafka
  10. CSS基础知识摘要
  11. 【jQuery】(6)---jQuery validate插件
  12. HDU2988-Dark roads,HDU1233-还是畅通工程-最小生成树
  13. C#/VB.NET设置Excel表格背景色
  14. 第九节,MXNet:用im2rec.py将图像打包生成.rec文件
  15. Redis数据类型List
  16. Python_面向对象基础
  17. 15.4-uC/OS-III资源管理(二值信号量)
  18. Libre 6008 「网络流 24 题」餐巾计划 (网络流,最小费用最大流)
  19. android学习中遇到的错误
  20. 也许,这样理解HTTPS更容易

热门文章

  1. 以其他字段作为某一字段的值. 字段长度char_length(?)
  2. MFC开发小技巧总结
  3. 利用MFC里面格式化函数也可以实现可变长度的问题
  4. java:注解(一)
  5. Swift初窥----语法进阶
  6. oracle学习之路(四) ---------PL/SQL 表,二维数组(TABLE)
  7. SpringMVC请求流程与原理分析
  8. cmake学习之- cmake_parse_arguments
  9. php迭代器模式
  10. modelsim-altera