xml的简介
eXtensible Markup Language
- 可扩展标记型语言
标记型语言
- html是标记型语言
也是使用标签来操作
可扩展
- html里面的标签是固定的,每个标签都有特定的含义<h1/>
- xml里面标签是可以自己定义的,可以写中文的标签<猫><猫/>
xml的用途
- html是用于显示数据,xml也可以用于显示数据(但不是主要功能)
- xml主要功能是为了储存数据
xml是w3c组织发布的
xml有俩个版本1.0 1.1
- 使用的都是1.0版本,(1.1版本不能向下兼容)
xml的应用
-
不同的系统之间传输数据
qq之间数据的传输
画图分析数据
QQ图片20190318160503.png -
用来表示生活之间有关系的数据
QQ图片20190318160607.png
QQ图片20190318160646.png -
经常用在文件配置
比如现在连接数据库,肯定知道 数据库的用户名和密码,数据名称
比如修改数据库的信息,不需要修改源代码 ,只要修改配置文件就行了
xml语法
(1)xml的文档说明(重要)
- 创建一个文件,后缀名是.xml
- 如果写xml,第一步,必须要有一个文档说明(写了文档说明之后,表示写xml文件的内容)
<?XML version="1.0" encoding="utf-8"?> - 文档说明必须写在第一行第一列
- 属性
version:xml的版本 1.0(使用) 1.1
encoding:xml编码 gbk(简体中文) utf-8(包含英文) iso8859-1(不包含中文)
standalone:是否需要依赖其他文件 yes/no
xml中文乱码问题解决
- 画图分析乱码
-
保存时候的编码和设置打开时候的编码一致,不会出现乱码
image.png
(2)定义元素(标签)(重要)
标签定义
- 标签定义有开始必须有结束<person></person>
- 标签没有内容,可以在标签内部结束;<a/>
- 标签可以嵌套,必须要求合理嵌套
合理嵌套:<aa><bb></bb></aa>
不合理嵌套:<aa><bb></bb><aa> - 一个xml中,只能有一个根标签,其他标签都是这个标签下面的的子标签
- 在xml中把空格和换行都当成内容来解析
下面这俩段代码是不一样的
<a>11111111</a>
<a>
11111111111
</a> - xml的标签可以是中文
- xml中标签的名称规则
(1)xml代码区分大小写
<q><Q>:这俩个标签是不一样的
(2)xml中标签不能以数字或者下划线开头
<1a><_a>:这样是不正确的
(3)xml的标签不能以xml,Xml,XMl,xmlaXMLb,这些都是不正确的
(3)xml中定义属性(重要)
- html是标记型文档,可以有属性
- xml也是标记型文档,可以有属性
- 属性定义的要求
(1)一个标签上可以有多个属性
<person id1= "aaaa" id2="bbbb"></person>
(2)属性名称不能相同
<person id1= "aaaa" id1="bbbb"></person>这是不正确的
(3)属性名称和属性值之间用=,属性值用引号包起来(可以是单引号也可以是双引号)
(4)xml属性的名称规范和元素的名称规范一致
(4)xml中的注释(重要)
- 写法
*注:
注释不能嵌套
-->
- 注释也不能放在第一行,第一行第一列必须放文档注释
(5)xml特殊字符(重要)
- 如果想要在xml中现在a>b a<b 不能正常显示,因为把<当成标签
-
如果想要显示,需要对特殊字符<>进行转义
image.png
(6)CDATA区(了解)
- 可以解决多个字符都需要转义的操作
if(a>b && a<b && b>c){}
把这些内容放在CDATA区里面,就不需要转义了 - 写法
<![CDATA [ 内容 ] ]>
代码
<![CDATA [<b> if(a>b && a<b && b>c){} </b> ] ]>
- 把特殊字符当成文本内容而不是标签
(7)PI指令(处理指令)(了解)
- 可以在xml中设置样式
- 写法
<?xml-stylesheet type="text/css" href="css的路径"?>
- 设置样式,只能对英文标签起作用,对于中文标签名称不起作用
xml的约束
- 为什么需要约束?
- 比如现在定义一个person的xml文件,只想要这个文件里面保存人的信息,比如name,age等,但是在xml文件中写了一个标签<猫></猫>,发现可以正常显示,因为符合语法规范,但是猫肯定不是人的信息,xml标签是自定义的,需要技术来规定xml中只能出现的元素,,这个时候需要约束
- xml约束的技术:dtd约束和schema约束
xml解析
xml的解析方式(技术):dom和sax
- 话题分析使用dom和sax解析xml的过程
- don解析和sax解析的区别
dom方式解析
根据xml的层级结构在内存中分配一个树形结构,把xml的标签,属性,和文本都封装成对象
缺点:如果文件过大,则会造成内存溢出
优点:很方便实现增删改查操作
sax方式解析
采用事件驱动,边读边解析
-从上到下,一行一行的解析,解析到某一个对象,返回对象名称
缺点:不能实现增删改查操作
优点:如果文件过大,不会造成内存溢出,方便实现查询操作
网友评论