xml笔记
1.extensible markup language可扩展标记型语言:可以自己扩展标签,主要目的是存储数据,是w3c组织发布的技术
有两个版本,1.1 1.0一般用1.0(1.1不向下兼容)
2.xml的应用
不同的系统之间传输数据:
例如qq传输数据;
用来表示生活中有关系的数据:
例如<中国>
<河南>
</河南>
</中国>
经常用在文件配置
3.xml的语法
(1)xml的文档声明
创建一个文件后缀名是.xml
必须有一个文档声明:<?xml version="1.0" encoding="gbk"?>
文档声明必须在第一行第一列
属性:version:1.0(一般)或者1.1
encoding:xml编码 gbk
standlone:是否需要依赖其他文件 yes/no
中文乱码问题:
保存的时候选择utf-8,和设置编码一致;
(2)定义元素
(3)定义属性
4.xml与元素定义
标签的开始必须有结束标签
标签可以嵌套,必须合理嵌套
一个xml中只能有一个根标签
在xml中空格和换行都当成内容处理
下面两端代码含义不一行:
<aa>11111</aa>
<aa>
11111
</aa>
xml标签可以是中文
xml标签命名规则:
(1)区分大小写
(2)不能以数字和下划线开头
(3)不能以xml XML Xml开头
(4)不能包含空格和冒号
5.xml中属性的定义
(1)一个标签可以有多个属性
(2)属性名称不能相同
(3)属性名称和属性值之间用=,属性值用(单引号或者双引号)
(4)属性命名规则和标签命名规则一致
6.xml的注释
<!--xml注释 -->
注释不能 嵌套,不能放第一行
7.xml特殊字符
如果想要显示<号,要进行转译
8.CDATA区
可以解决多个字符都需要转译的字符,一长串,放进去就不用转译了
<![CDATA[内容]]>
把特殊字符当做文本内容,而不是特殊 标签
9.PI指令(处理指令)
可以在xml设置样式
<?xml-stylesheet type="text/css" href="css的路径"?>对中文标名称不起作用
10.xml的约束
标签没有逻辑;
技术:dtd约束技术和 schema约束
11.dtd快速入门
创建一个文件后缀名.dtd
(1)看xml中有多少个元素,有几个就在dtd文件中写 几个<!ELEMENT>
(2)判断元素是简单元素还是复杂元素
简单元素:没有子元素
<!ELEMENT 元素名称(子元素)>//子元素用逗号隔开
复杂元素:有子元素的元素
<!ELEMENT 元素名称(#PCDATA)>
(3)需要在xml文件中引入dtd文件
<!DOCTYPE 根元素名称 SYSTEM "dtd文件的路径">
12.dtd的三种引入方式
(1)引入外部的dtd文件
<!DOCTYPE 根元素名称 SYSTEM “dtd路径”>
(2)使用内部的dtd文件
-<!DOCTYPE 根元素名称 [
。。。
]>
(3)使用外部的dtd文件(网络上的dtd文件)
<!DOCTYPE 根元素名称 PUBLIC“dtd路径” “dtd文档的url”>
13.使用dtd定义元素
语法:<!ELEMENT 元素名 约束>
简单元素:没有子元素的元素
<!ELEMENT name (#PCDATA)>
(1)(#PCDATA):约束name是字符串类型
(2)EMPTY:元素为空
(3)ANY::任意
复杂元素:
<!ELEMENT person (name,age,sex,school)>子元素只能出现一次
表示子元素出现的次数:
+:表示出现一次或者多次
?:表示零次或一次
*:表示出现零次或多次
子元素直接用逗号隔开,表示元素出现的顺序
子元素直接使用|隔开,表示元素只能出现其中的任意一个
14.使用dtd定义属性
语法:<!ATTLIST 元素名称 属性名称 属性类型 属性的约束>
属性类型
CDATA:字符串
枚举:表示只能在一定范围内出现值,其中一个
(aa|bb|cc)
ID:值只能是字母或者下划线开头
属性的约束:
#REQUIRED:属性必须存在
#IMPLIED:属性可有可无
#FIXED:表示一个固定的值,属性的值必须是这个设定的值
15.实体的定义
语法:<!ELEMENT 实体名称 “实体的值”>
使用实体&实体名称,比如&test
16.xml的解析的简介
xml的解析方式:dom和sax
dom:内存分配一个树形结构缺点:文件过大的话,内存溢出;优点:很方便实现增删改操作
sax:从上到下,边读边解析,缺点:不能实现增删改操作;优点:不会造成内存溢出