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)

XML文件的特点的更多相关文章

  1. Asp.Net 操作XML文件的增删改查 利用GridView

    不废话,直接上如何利用Asp.NET操作XML文件,并对其属性进行修改,刚开始的时候,是打算使用JS来控制生成XML文件的,但是最后却是无法创建文件,读取文件则没有使用了 index.aspx 文件 ...

  2. Android 解析XML文件和生成XML文件

    解析XML文件 public static void initXML(Context context) { //can't create in /data/media/0 because permis ...

  3. MyBatis2:config.xml文件

    前言 前一篇文章,讲了MyBatis入门,讲到了MyBatis有两个基本的配置文件,一个用来配置环境信息,一个用来写SQL语句.前者我把它命名为config.xml,config.xml的内容是: & ...

  4. 3. 解析 struts.xml 文件

    1. struts.xml 文件基本配置: 主要放在资源路径下,配置 sturts2相关的 Action , 拦截器等配置 <struts> <!-- 设置常量 --> < ...

  5. Eclipse代码和xml文件的智能提示

    一.代码智能提示 Windows → Preferences → Java→ Editor → Content Assist 将 Auto activation delay(ms): 改为 0 将 A ...

  6. node使用xml-writer生成本地XML文件实例

    npm中xml-writer文档的链接地址:https://www.npmjs.com/package/xml-writer npm中的文档比较简单,而且生成本地xml文件的demo并不正确.本篇是对 ...

  7. xml文件解析(解析以后在RootTableViewController输出)

    这是从美团弄得xml文件,地区和经纬度. 你点了地区以后 ,  就可以查看经纬度 ,因为笔者懒, 有现成的文本框 , 所有偷懒了. 下面是一些枯燥的代码了 . #import <UIKit/UI ...

  8. iOS xml文件的解析方式 XMLDictionary,GDataXMLNode,NSXMLParser

    iOS9之后,默认网络请求是https,所有我们要设置一下网络安全,具体设置如下 1.第三方类库 XMLDictionary 下载地址: https://github.com/nicklockwood ...

  9. java-w3c.document生成xml文件

    案例 /** * 创建和写入xml * @param xmlrootname * @param waitConverList */ private void createAndWriterXML(St ...

  10. 使用sublime一键格式化XML文件

    1 sublime简介 sublime是一款代码编辑和阅读软件,体积小,运行快,界面非常简洁漂亮.官方地址:https://www.sublimetext.com/ 2 在sublime上安装插件 使 ...

随机推荐

  1. 使用REST-Assured对API接口进行自动化测试

    转载:http://blog.csdn.net/u012050416/article/details/50674612 准备 目标 开始编码 总结   说明:本文只是一个getStart示例,关键在于 ...

  2. mongodb文档的CRUD

    本章会介绍对数据库移入或者移出数据的基本操作 向集合添加文档 从集合删除文档 更新现有的文档 为这些操作选择合适的安全级别 添加删除数据库 添加数据库 :use foo  如果存在foo 就use   ...

  3. SQLserver字符串分割函数

    一.按指定符号分割字符串,返回分割后的元素个数,方法很简单,就是看字符串中存在多少个分隔符号,然后再加一,就是要求的结果.CREATE function Get_StrArrayLength(  @s ...

  4. linux 挂载相关

    mount命令的用法,以及技巧光盘镜像文件.移动硬盘.共享文件夹及U盘的方法. 一,挂接命令(mount) 挂接(mount)命令的使用方法. 命令格式:  mount [-t vfstype] [- ...

  5. 本地aar文件引用

    有时须要使用第三方的aar库.或是project源码越来越大.项目内分工须要或出于模块化考虑.须要引用aar文件. arr就像C/C++中的静态库. 怎样建一个aar.网上的文章非常多,这里不再重述. ...

  6. HTML5 2D平台游戏开发#4状态机

    在实现了<HTML5 2D平台游戏开发——角色动作篇之冲刺>之后,我发现随着角色动作的增加,代码中的逻辑判断越来越多,铺天盖地的if() else()语句实在让我捉襟见肘: 这还仅仅是角色 ...

  7. UbuntuServer12.04安装MongoDB,开机自启,服务,权限

    获取最新版本 去http://www.mongodb.org/downloads找最新版的链接 wget http://fastdl.mongodb.org/linux/mongodb-linux-x ...

  8. substring,subsequence,charAt执行效率的不同

    package com.java.tencent; public class T_2_longestPalindrome { public String test1(String s){ long s ...

  9. js判断参数类型

    如何判断js中的数据类型:typeof.instanceof. constructor. prototype方法比较 如何判断js中的类型呢,先举几个例子: var a = "iamstri ...

  10. warning: mysql-community-libs-5.7.11-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5

    1.错误描写叙述 [root@ mysql]# rpm -ivh mysql-community-libs-5.7.11-1.el7.x86_64.rpm warning: mysql-communi ...