1.1 XML 简介
定义: eXtensiable Markup Language
a) 可拓展标记语言, 是一种标记语言,
b) xml是一种非常灵活的语言, 没有固定标签, 所有的标签都是自定义.
c) 通常被用于信息记录和传递. 因此, xml经常被用来作为配置文件.
<?xml version="1.0" encoding="UTF-8"?><!--xml声明版本和编码信息-->
<books> <!--根元素-->
<!--图书信息--> <!-注释--->
<book id="bk101"> <!--属性-->
<author>王珊</author>
<title>.NET高级编程</title>
<description>包含C#框架和网络编程</description>
<!--元素从一开始标签 元素内容和结束标签构成-->
</book>
</book>
1.2 格式良好的xml
a) 声明信息, 用于描述xml的版本版本和编码方式.
<?xml version="1.0" encoding="UTF-8"?><!--xml声明版本和编码信息-->
b) xml有且仅有一个根元素.
c) xml中, 是大小写敏感的.
d) 标签是成对的, 而且要正确嵌套.
e) 属性值要加双引号
f) 注释写法
<!--注释-->
编辑器
作用
2. DTD
a) DTD, Document Type Definition, 文档类型定义
b) 用于约束xml的文档格式, 保证xml是一个有效的xml
c) DTD可以分为两种, 分别是内部DTD和外部DTD
2.2 使用DTD
a) 内部DTD定义语法如下,
<!DOCTYPE 根元素 [元素声明]>
b) 元素声明语法:
<ELEMENT 元素名 [, 子元素...]>
c) 数量词
>+ : 表示出现1次或者多次, 至少1次.
>? : 表示出现0次或者1次.
>* : 表示出现任意次.
d) 属性声明语法
>属性类型: CDATA, 表示字符数据(character data)
>默认值:
- #REQUIRED
- #IMPILED
e) 带DTD的完整xml代码
<?xml version="1.0" encoding="UTF-8"?>
<!-- 声明内部DTD -->
<!DOCTYPE score [
<!ELEMENT scores (student*)>
<!ELEMENT student (name, course, score)>
<!ATTLIST student id CDATA #REQUIRED> <!-- IMPILED-->
<!ELEMENT name (#PCDATA)> <!-- 必须匹配 -->
<!ELEMENT course (#PCDATA)>
<!ELEMENT score (#PCDATA)>
]>
<scores>
<student id="1">
<name>王彤</name>
<course>java</course>
<score>89</score>
</student>
<student id="2">
<name>张三</name>
<course>java</course>
<score>99</score>
</student>
</scores>
2.2.2 外部DTD的定义
a) 创建一个外部独立.dtd文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE score [
<!ELEMENT scores (student*)>
<!ELEMENT student (name, course, score)>
<!ATTLIST student id CDATA #REQUIRED> <!-- IMPILED-->
<!ELEMENT name (#PCDATA)>
<!ELEMENT course (#PCDATA)>
<!ELEMENT score (#PCDATA)>
]>
b) 在xml中引入外部DTD文档
<?xml version="1.0" encoding="UTF-8"?>
<!-- 引入外部DTD文件 -->
<!DOCTPE scores SYSTEM "scores.dtd">
<scores>
<student id="1">
<name>王彤</name>
<course>java</course>
<score>89</score>
</student>
<student id="2">
<name>张三</name>
<course>java</course>
<score>99</score>
</student>
</scores>
3. xml的解析
对xml文件进行操作, 包括床架 xml, 对xml文件进行操作
3.1.1 DOM 解析
是官方提供的解析方式, 基于xml树.
3.1.2 SAX解析
是民间的的解析方式, 基于时间的的解析.
3.1.3 JDOM解析
第三方提供, 开源的解析方式, 比DOM解析快.
3.1.4 DOM4J 4 for
第三方提供, 开源解析, 是JDOM的升级版, 主流使用.
DOM4J, 先去下载API 导入工程, 然后使用它.一般有两种操作, 创建xml或者操作xml, 配合java使用.包括和数据库配合使用, 在本地存储数据.
原理就是, 把xml文件转化成对象进行处理.
此外, xml和html并无差别, html其实就是已经被限制了元素类型和元素属性的xml.