知乎上的回答:
举几个栗子说明一下。

比如,我们要给对方传输一段数据,数据内容是“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,都只是包装数据的不同格式而已,重要的是其中含有的数据,而不是包装的格式。

下面摘自大牛的博客:
原文链接:http://blog.csdn.net/cds27/article/details/743409

XML即可扩展标记语言(eXtensible Markup Language)。标记是指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息的文章等。如何定义这些标记,既可以选择国际通用的标记语言,比如HTML,也可以使用象XML这样由相关人士自由决定的标记语言,这就是语言的可扩展性。XML是从SGML中简化修改出来的。它主要用到的有XML、XSL和XPath等。

上面这段是对XML的一个基本定义,一个被广泛接受的说明。简单说,XML就是一种数据的描述语言,虽然它是语言,但是通常情况下,它并不具备常见语言的基本功能——被计算机识别并运行。只有依靠另一种语言,来解释它,使它达到你想要的效果或被计算机所接受。

假如你是刚接触XML的新手,那么可能并无法从定义上是了解XML是什么。也许,你可以换个角度来认识XML是什么;从应用面来认识XML,从XML可以做些什么来认识它,这应该能比那更空洞的定义对你更有帮助。

XML应用面主要分为两种类型,文档型和数据型。下面介绍一下几种常见的XML应用:

1、自定义XML+XSLT=>HTML,最常见的文档型应用之一。XML存放整个文档的XML数据,然后XSLT将XML转换、解析,结合XSLT中的HTML标签,最终成为HTML,显示在浏览器上。典型的例子就是CSDN上的帖子。

2、XML作为微型数据库,这是最常见的数据型应用之一。我们利用相关的XML API(MSXML DOM、Java DOM等)对XML进行存取和查询。留言板的实现中,就经常可以看到用XML作为数据库。同时,这里要告诉一些新人,数据库和数据库系统,这两个概念是不同的。这里顺便提一下XML对数据库系统的影响。在新版本的传统数据库系统中,XML成为了一种数据类型。和“传统”相对的就是一种新形态的数据库,完全以XML相关技术为基础的数据库系统。目前比较知名的eXist。

3、作为信息传递的载体。为什么说是载体呢?因为这些应用虽然还是以XML为基本形态,但是都已经发展出具有特定意义的格式形态。最典型的就是WEB SERVICE,将数据包装成XML来传递,但是这里的XML已经有了特定的规格,即SOAP。不过这里还不得不说AJAX,AJAX的应用中,相信也有一部分的应用是以自定义XML为数据,不过没有成为工业标准,这里不做详述。

4、应用程序的配置信息数据。最典型的就是J2EE配置WEB服务器时用的web.XML。这个应用估计是很容易理解的了。我们只要将需要的数据存入XML,然后在我们的应用程序运行载入,根据不同的数据,做相应的操作。这里其实和应用2,有点类似,所不同的在于,数据库中的数据变化是个常态,而配置信息往往是较为静态,缺少变化的。

5、其他一些文档的XML格式。如WORD、EXCEL等。

6、保存数据间的映射关系。如hibernate。

这几种常见应用中,我们还可以根据其应用广泛程度,分为:自定义XML和特定意义XML。在1和2就是属于自定义XML的范畴;3至6则属于特定意义XML,或者说是XML的延伸。

这里介绍的6种应用,基本涵盖了XML的主要用途。总之,XML是一种抽象的语言,它不如传统的程序语言那么具体。要深入的认识它,应该先从它的应用入手,选择一种你需要的用途,然后再学习如何使用。

XML是什么,它可以做什么?——XML详解相关推荐

  1. java闪光灯手电筒_Android_Android 开启闪光灯做手电筒的详解,复制代码 代码如下:public class H - phpStudy...

    Android 开启闪光灯做手电筒的详解 public class HandLightActivity extends Activity implements OnClickListener{ pri ...

  2. python接口自动化(四十一)- 发xml格式参数的post请求(超详解)

    简介 最近在工作中,遇到一种奇葩的接口,它的参数数据是通过xml,进行传递的,不要大惊小怪的,林子大了什么鸟都有,每个人的思路想法不一样,开发的接口也是各式各样的,如果想要统一的话,必须是提前团队已经 ...

  3. matlab读取xml文档并储存为.mat文件详解

    起因是需要将c++中的矩阵传入matlab中进行处理,发现xml文档可以保留精度,因此选择xml作为中介完成从c++到matlab的数据传递. xml文档结构如下: <opencv_storag ...

  4. android xml通知栏权限配置,Android开发中 AndroidManifest.xml配置之service,receiver标签配置详解...

    本文主要来分享service,receiver标签配置.如有错误,欢迎指正. android:directBootAware=["true" | "false" ...

  5. java值参_Java陷阱之慎用入参做返回值详解

    正常情况下,在Java中入参是不建议用做返回值的.除了造成代码不易理解.语义不清等问题外,可能还埋下了陷阱等你入坑. 问题背景 比如有这么一段代码: @Named public class AServ ...

  6. 字节跳动如何做教育? | 详解

    并不乏大公司进入教育行业.前有平台型公司腾讯.阿里.百度.网易,后有新锐公司快手.B站.但万人投入的计划力度,还只有一家:字节跳动. 从2017年开始以投资方式,触达教育赛道.3年后的2020年,字节 ...

  7. python接口自动化 一个变量 其他接口要用_python接口自动化(二)--什么是接口测试、为什么要做接口测试(详解)...

    简介 上一篇和大家一起科普扫盲接口后,知道什么是接口,接口类型等,对其有了大致了解之后,我们就回到主题-接口测试. 什么是接口测试 接口测试是测试系统组件间接口的一种测试.接口测试主要用于检测外部系统 ...

  8. python接口自动化(二)--什么是接口测试、为什么要做接口测试(详解)

    简介 上一篇和大家一起科普扫盲接口后,知道什么是接口,接口类型等,对其有了大致了解之后,我们就回到主题-接口测试. 什么是接口测试 接口测试是测试系统组件间接口的一种测试.接口测试主要用于检测外部系统 ...

  9. 外贸行业网站的seo优化推广怎么做?优化技巧详解

    从事外贸行业的人员相信经常能听到,"外贸行业不行啦,不要轻易踏进外贸行业".但是据数据显示,"2021年1月至4月,我国外贸进出口.出口.进口同比分别增长28.5%.33 ...

  10. Android自定义view心电图,如何用PS做心电图,PS做心电图操作过程详解

    photoshop是一个功能强大的图像软件,那么如何用photoshop做一个心电图效果的动态图片呢?这些图片可以做一个个性的贴吧签名档,现在就为大家介绍一下. 1.打开photoshop,根据想要的 ...

最新文章

  1. 自学成才翁_作为一名自学成才的开发者从“我的旅程”中吸取的教训
  2. Java进程占用内存过高,排查解决方法
  3. POJ 3414 Pots【广搜】
  4. nssl1156-今天你AK了吗?【康托展开,高精度,二分答案,树状数组】
  5. Python Configparser模块读取、写入配置文件
  6. 数据结构两个月学完_这是我作为数据科学家两年来所学到的
  7. 漫步微积分二十六——Sigma符号和一些特殊和
  8. 汇编语言 HelloWorld (详细注释版)
  9. 土方工程量计算表格excel_土方量调配表(Excel公式版)
  10. (二)CXF之用CXF官方工具生成客户端Client
  11. python dataframe去除重复项_python - Pandas DataFrame处理查找DataFrame中的重复项 - 堆栈内存溢出...
  12. qq android qav,33 BK.QQAVManager 音视频管理
  13. flv网页播放器开源代码
  14. 新书推荐 |《企业私有云建设指南》
  15. 交通流模型仿真(Traffic flow)
  16. 绿竹生物上市破发:首日跌33% 募资2亿收盘市值45亿港元
  17. Intel傲腾存储黑科技终极版:DIMM内存条明年到来
  18. intellidea 应用问题
  19. JSHOP2算例介绍:blocksworld问题
  20. 走近棒球运动·辛辛那提红人队·MLB棒球创造营

热门文章

  1. coreldraw2019天气滤镜_最新版本CorelDRAW2019安装包分享!新增和增强10个功能内附教程...
  2. 【格式化文档】ISO27001控制措施+ISO27002实施指南 【中】
  3. 删除文件恢复软件?只需2个步骤
  4. Arcgis出图时提示未能加载文件或程序集stdole, Version=7.0.3300.0错误
  5. “免费”概念掀起网络游戏革命
  6. Redis五种基本数据类型底层详解(原理篇)
  7. 16、jQuery插件之Slick幻灯片插件
  8. 基带、基带信号和基带传输(附带频带和宽带)
  9. c语言 周期性矩形脉冲,模拟电子技术讲义
  10. 【性能学习】性能测试基础