XML和Json是两种最常用的在网络中数据传输的数据序列化格式,随着时代的变迁,XML序列化用于网络传输也逐渐被Json取代,前几天,单位系统集成开发对接接口时,发现大部分都用的WebService技术,而数据传输序列化都是XML,所以想在此重温一下关于XML的相关知识。

一、什么是XML

1、XML是可扩展标记语言

2、XML宗旨是传输数据,而非显示数据

3、XML没有预定义标签,都需要自行定义标签

4、XML不会做任何事情,他设计出来就是为了结构化、储存和传输信息用的

5、XML是纯文本,有能力处理纯文本的软件,都可以处理XML

二、XML结构

首先我们来看一个简单的XML示例

 <?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>小魔王</to>
<from>女神</from>
<heading>表白</heading>
<body>我喜欢你好久了</body>
</note>

第一行是XML声明,他定义XML的版本(1.0)和所使用的编码(ISO-8859-1 = Latin-1/西欧字符集)。

下一行描述文档的根元素<note>

接下来的4行描述根元素的4个子元素 to、from、heading、body

最后一行定义根元素的结尾

看上面的结构,我们可以设想一下:这个XML文档包含了 女神 给 小魔王 表白的信息。

这样看来,XML具有出色的自我描述性,同意吗?

三、注意点:

1、XML文档必须包含根元素,该元素是所有其他元素的父元素

2、XML文档中的元素形成了以可文档树,这棵树从根部开始,并扩展到树的最低端,所有元素均可拥有子元素

3、父、子以及同胞等术语用于描述元素之前的关系,父元元素拥有子元素,相同层级上的子元素成为同胞(兄弟或姐妹)

下面我们来个示例:

 <?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book category="COOKING">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="CHILDREN">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="WEB">
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>

示例图解:

例子中的根元素是<bookstore>,文档中的所有<book>元素有被包含在<bookstore>中。

<book>元素有4个子元素:<title>、<author>、<year>、<price>

4、所有元素均可拥有文本内容和属性(类似HTML中)

5、所有XML元素又必须有关闭标签(注:XML声明没有关闭标签这不是错误,声明不属于XML本身的组成部分,他不是XML元素,也不需要关闭标签)

6、XML标签对大小写敏感,即<Letter>与<letter>是两个不同的标签

7、XML的属性值必须加引号(无论数字还是非数字)。

8、XML中,空格会被保留(与HTML不同)

四、实体引用

在XML中,一些字符拥有特殊的意义。

比如”<“ ,如果你将字符”<“放到XML元素中,会发生错误,这是一因为解析器会把它当作新元素的开始,例如:

<age>19<20</age>

为了避免这个错误,请用实体引用来代替”<“字符:

<age>19&lt;20</age>

在XML中,有5个预定义的实体引用,如下:

注:在XML中,只有字符”<“,”&“ 是非法的,">"是合法的,但是用实体引用来代替它是一个好习惯。

XML还有一些高级的用法,比如命名空间、CDATA 等等,我们将会在下次进行分享~

最新文章

  1. 【java】jackson 中JsonFormat date类型字段的使用
  2. 第八课,T语言功能和参数(版本5.0)
  3. 在ASP.NET MVC中使用MySQL【并使用membership】
  4. HDU 3467 (求五个圆相交面积) Song of the Siren
  5. python模块学习 logging
  6. 创业青年:刘霞(YBC推荐)_CCTV.com_中国中央电视台
  7. android 小结
  8. (工具)source insight高速增加时间代码
  9. Scrapy 通过登录的方式爬取豆瓣影评数据
  10. css margin相关问题及应用
  11. mysql root密码
  12. yum安装phpmyadmin小问题
  13. Prometheus-Consul-Api
  14. ansible 使用记录
  15. 《DSP using MATLAB》Problem 7.14
  16. kebu之rook-ceph
  17. hive参数配置及任务优化
  18. centos 7.0 lnmp成功安装过程(很乱)
  19. php单图片上传。
  20. Spring4笔记9--Spring的事务管理(AOP应用的例子)

热门文章

  1. 5.Go-封装、继承、接口、多态和断言
  2. c#图片的平移与旋转
  3. IdentityServer4笔记整理(更新中)
  4. 控制台基于Quartz.Net组件实现定时任务调度(一)
  5. 【C++】string::find函数
  6. GBK和UTF-8的区别
  7. 进程间通信与ipcs使用7例
  8. 谈谈你对java平台的理解?
  9. 论文解读2——Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
  10. 第一个基于ArcGIS的Android应用