xml学习笔记

本文介绍了XML的基本概念,包括其用途、语法特点及如何通过DTD进行约束。详细解释了XML文档声明、元素定义、属性和标签的命名规范等内容,并探讨了DTD的创建与应用。

1 xml简介
extensible markup language:可扩展标记型语言
标记型:html是标记型语言
-xml也是使用标签来操作
可扩展:html里标签的含义是固定的
-xml标签可以自定义
用 途:html用于显示数据
-xml是为了存储数据
xml版本:目前都是1.0版本
-1.1不能向下兼容

2 xml的应用
*不同的系统之间传输数据
*用来表示生活中有关系的数据
*经常在配置文件

3 xml的语法
(1)xml的文档声明
写了文档声明之后,就表示写的是xml文档
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
*必须写在第一行第一列
*standalone一般不用
*乱码问题分析
保存xml到本地硬盘,如果编辑工具默认使用了gbk编码保存--把中文部分进行转换(到gbk码表里查找对应的编码)-转换成二进制码保存
打开xml文件---到硬盘中读取文件,使用配置中uft-8(encoding="utf-8")进行转码--出现乱码
所以,应该保存和打开使用的编码一致就不会出现乱码了
(2)定义元素(标签)
<tag>....</tag>或没有内容在标签内结束<tag/>
一个xml文档,有且只有一个根标签
*对空格和换行都当成内容来解析--需注意
标签的命名规则:
xml代码区分大小写
中间不能用冒号、空格
(3)定义属性
和标签的命名规范一致
(4)注释
<!--注释-->
<!--<!--注释-->--> 错误,不能嵌套
(5)特殊字符转义
< &lt;
> &gt;
"" &quot;
(6)CDATA区(了解)
可以解决多个字符都需要转义的操作
<![CDATE[内 容]]>
(7)PI指令(chuli )
可以在xml中设置样式

4 xml的约束
xml的标签是自定义的,需要技术来规定xml中只能出现的元素
*xml的约束技术:dtd约束和schema约束

5 dtd约束
创建一个文件后缀名是 .dtd
创建dtd文件步骤:
(1)看xml有多少个元素,有几个元素,就在dtd文件中写几个<!ELEMENT>
(2)判断元素是简单元素还是复杂元素
-复杂元素:有子元素的元素
<!ELEMENT 元素名称(子元素)>
-简单元素:没有子元素的元素
<!ELEMENT 元素名称(#PCDATA)>
(3)需要在xml中引入dtd文件
<!DOCTYPE 根元素名称 SYSTEM "dtd文件的路径">
** 使用浏览器打开xml,只负责校验xml语法,不负责校验约束

6 dtd的引入方式:
(1)引入外部的dtd文件
<!DOCTYPE 根元素名称 SYSTEM "dtd文件的路径">
(2)使用内部的dtd文件
<DOCTYPE 根元素名称[
<!ELEMENT 元素名称(xxxx)>
<!ELEMENT 元素名称(xxxx)>
...
]>
(3)外部dtd文件(网络上的dtd文件)

7 使用dtd定义元素
简单元素:
语法:<!ELEMENT 元素 约束>
#PCDATA:元素为字符串类型
EMPTY: 元素为空
ANY: 任意
复杂元素:
<!ELEMENT 元素 (子元素)>
+ :一次或多次
?:零次或一次
* :零次或多次
,:表示元素出现的顺序
| :表示只能出现其中的任意一个


8 使用dtd定义属性
语法:<!ATTLIST 元素名称
属性名称 属性类型 约束
>
属性类型:
CDATA:文本字符串
枚举:只能出现其中的一个(aa|bb|cc)
ID:只能是字母或下划线开头
属性约束:
#REQUIRED:该属性必须出现
#IMPLIED:该属性可有可无
#FIXED:表示一个固定值

9 定义引用实体
语法:<!ENTITY 实体名称 "实体的值">
<!ENTITY TEST "hahahehe">
使用实体:&实体名称;如:&TEST

10 xml的解析简介
*html的解析方式:dom解析
根据html的层级结构,在内存中分配一个树形结构,把html的标签 属性 文本都封装成对象
-doucument对象、element对象、属性对象、文本对象、Node对象
*xml的解析方式(技术):dom解析和sax解析
dom解析:
优点:方便进行增删改
缺点:如果文件过大,会造成内存溢出
sax解析:
采用事件驱动,边读边解析,从上到下,一行一行解析。解析到某一个对象,把对象名称返回
优点:不会造成内存溢出,实现查询
缺点:不能实现增删改操作
针对dom和sax的解析器:
sun公司:jaxp
dom4j组织:dom4j
jdom组织:jdom

转载于:https://www.cnblogs.com/zecdllg/p/9077229.html