xml用途以及与HTML,json比较
转自:https://blog.****.net/guo13313/article/details/68953837
和:https://blog.****.net/cds27/article/details/743409
————————————初识——————————————
是什么?
XML,Extensible Markup Language,扩展性标识语言。文件的后缀名为:.xml。就像HTML的作用是显示数据,XML的作用是传输和存储数据。
据说,java是一门专业操作XML的语言。
是干啥用的?
为了便于不同应用、不同平台之间的数据共享和通信。
具体点的作用为:
(1)可作为一种简单的数据库,存储并检索数据;
(2)传输约定格式的文件;
(3)做软件的配置文件。【配置文件:保存软件设置的文件】
————————————比较——————————————
XML的哥哥——HTML
出生:
XML的出生是为了完善HTML的缺陷和局限性。
在使用方面的区别如下:
比较内容 |
HTML |
XML |
作用 |
显示数据 |
传输和存储数据 |
语法 |
无右述要求 |
要求嵌套、配对,并遵循DTD的树形结构 |
空格 |
多个时只显示一个 |
输入几个显示几个 |
与数据库的关系 |
无直接联系 |
与关系型和层状数据库均可对应和转换 |
大小写敏感性 |
不区分 |
区分 |
XML的闺蜜——JSON
先来说说“哥哥”和“闺蜜”的区别:哥哥是指一个妈生的;闺蜜是非亲的。
JSON,Javascript Object Notation,js对象表示法。作用也是存储和交换文本信息。
两者比较:JSON比XML更小,更快,更易解析,so,也更受欢迎。
两者作用范围:JSON适用于简单的传值,XML适用于更广阔的范围。
————————————更深层次的认识————————————
XML的数据结构——树形结构
具体是怎么体现的,读者可参照下文实例中的代码,一看便明白。
值得关注的是,就像一棵书只有一个根,XML只能有一个根元素。
思维导图
下面附上小编画的思维导图,欢迎读者交流。
————————————举例——————————————
.xml文件中的代码:
-
<?xml version="1.0" encoding="UTF-8"?>
-
<email xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="email.xsd">
-
-
-
<title>about loving</title>
-
<body>I love you forever!</body>
-
<date>2008-11-12</date>
-
</email>
.xsd文件中的代码:
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="email">
<xs:complexType>
<xs:sequence>
<xs:element name="to" type="xs:string"></xs:element>
<xs:element name="from" type="xs:string"></xs:element>
<xs:element name="title" type="xs:string"></xs:element>
<xs:element name="body" type="xs:string"></xs:element>
<xs:element name="date" type="xs:date"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</schema>
实现的效果:
知乎上的回答:
举几个栗子说明一下。
比如,我们要给对方传输一段数据,数据内容是“too young,too simple,sometimes naive”,要将这段话按照属性拆分为三个数据的话,就是,年龄too young,阅历too simple,结果sometimes naive。
我们都知道程序不像人,可以体会字面意思,并自动拆分出数据,因此,我们需要帮助程序做拆分,因此出现了各种各样的数据格式以及拆分方式。
比如,可以是这样的
数据为“too young,too simple,sometimes naive”
然后按照逗号拆分,第一部分为年龄,第二部分为阅历,第三部分为结果。
也可以是这样的
数据为“too_young**too_simplesometimes_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,都只是包装数据的不同格式而已,重要的是其中含有的数据,而不是包装的格式。
文字描述:
**
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,显示在浏览器上。典型的例子就是****上的帖子。
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是一种抽象的语言,它不如传统的程序语言那么具体。要深入的认识它,应该先从它的应用入手,选择一种你需要的用途,然后再学习如何使用。