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 等等,我们将会在下次进行分享~

XML的相关基础知识分享的更多相关文章

  1. XML的相关基础知识分享(二)

    前面我们讲了一下XML相关的基础知识(一),下面我们在加深一下,看一下XML高级方面. 一.命名空间 1.命名冲突 XML命名空间提供避免元素冲突的方法. 命名冲突:在XML中,元素名称是由开发者定义 ...

  2. 【RAC】RAC相关基础知识

    [RAC]RAC相关基础知识 1.CRS简介    从Oracle 10G开始,oracle引进一套完整的集群管理解决方案—-Cluster-Ready Services,它包括集群连通性.消息和锁. ...

  3. JAVA相关基础知识

    JAVA相关基础知识 1.面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分, ...

  4. iOS蓝牙开发(二)蓝牙相关基础知识

    原文链接: http://liuyanwei.jumppo.com/2015/07/17/ios-BLE-1.html iOS蓝牙开发(一)蓝牙相关基础知识: 蓝牙常见名称和缩写 MFI ====== ...

  5. 深入理解mysql之BDB系列(1)---BDB相关基础知识

        深入理解mysql之BDB系列(1) ---BDB相关基础知识 作者:杨万富   一:BDB体系结构 1.1.BDB体系结构 BDB总体的体系结构如图1.1所看到的,包括五个子系统(见图1.1 ...

  6. GO基础知识分享

    目录 GO基础知识分享 go语言的基本事项 关键字 字符串的拼接和变量的定义方式 空白符 const常量 iota的用法 运算符 Go 没有三目运算符,不能适用?: 语言条件语句 for循环的方式 函 ...

  7. WEB前端需要了解的XML相关基础知识

    什么是 XML? XML 指可扩展标记语言(EXtensible Markup Language) XML 是一种标记语言,很类似 HTML XML 的设计宗旨是传输数据,而非显示数据 XML 标签没 ...

  8. iOS蓝牙开发(一)蓝牙相关基础知识(转)

    转载自:http://www.cocoachina.com/ios/20150915/13454.html 原文作者:刘彦玮 蓝牙常见名称和缩写 MFI ======= make for ipad , ...

  9. IOS 蓝牙相关-基础知识(1)

    蓝牙常见名称和缩写 MFI ======= make for ipad ,iphone, itouch 专们为苹果设备制作的设备 BLE ==== buletouch low energy,蓝牙4.0 ...

随机推荐

  1. 微信小程序的视图与渲染

    1.组件的基本使用 <button type="default" > default </button> <button type="pri ...

  2. 【Java笔记】【Java核心技术卷1】chapter3 D2注释

    package chapter3; /** * 文档注释 *@author lp *@version 1 **/ public class D2注释 { //单行注释 /* 长注释 */ }

  3. 信息收集框架——recon-ng

    背景:在渗透测试前期做攻击面发现(信息收集)时候往往需要用到很多工具,最后再将搜集到的信息汇总到一块.          现在有这样一个现成的框架,里面集成了许多信息收集模块.信息存储数据库.以及报告 ...

  4. JS中map()与forEach()的区别和用法

    相同点: 1.都是循环遍历数组中的每一项 2.每次执行匿名函数都支持三个参数,参数分别为item(当前每一项),index(索引值),arr(原数组) 3.匿名函数中的this都是指向window 4 ...

  5. 28岁,转行学 IT 靠谱吗?

    前几天在知乎上,刷到这么一个问题 鉴于有不少人看了我的blog给我私信一些职业规划相关的问题,讨论很多的就是担心自己年龄是否还适合转行. 于是决定静心下来码了一篇回答, 同时搬到博客园来供大家消遣.. ...

  6. (转载)分享常用的GoLang包工具

    分享常用的GoLang包工具 包名 链接地址 备注 Machinery异步队列 https://github.com/RichardKnop/machinery Mqtt通信 github.com/e ...

  7. Java虚拟机一看就懂01

    Jvm内存结构 --- 线程隔离区域说明: 1.1.程序计数器 线程私有 是一块内存空间 唯一的一个在Java虚拟机规范中没有规定任何OOM情况的区域(不会OOM?) 1.2.Java虚拟机栈 线程私 ...

  8. 9407web常用符号

    常用符号 转载自 http://www.fhdq.net/ ❤❥웃유♋☮✌☏☢☠✔☑♚▲♪✈✞÷↑↓◆◇⊙■□△▽¿─│♥❣♂♀☿Ⓐ✍✉☣☤✘☒♛▼♫⌘☪≍←→◈◎☉★☆⊿※¡━┃♡ღツ☼☁❅♒✎©® ...

  9. React Native的APP打包教程

    1.改软件的名称 2.改软件的图标 3.给做好的项目打成APP包 改软件的名称 找到项目的改名的位置 然后用记事本打开strings.xml,然后改自己想要的名字 改软件的图标 找到如下5个文件,然后 ...

  10. StackOverflow 周报 - 这些高关注的问题你是否都会

    我从 Stack Overflow 上找的了一些高关注度且高赞的问题.这些问题可能平时我们遇不到,但既然是高关注的问题和高点赞的回答说明是被大家普遍认可的,如果我们提前学到了以后不管工作中还是面试中处 ...