文章目录

  • 一、XML概述
  • 二、XML的标签语法
  • 三、XML约束
  • 四、DTD约束
  • 五、Schema约束
  • 六、XML解析
  • 七、Dom4j:


一、XML概述

简介:

英文名称:eXtensible Markup Language
中文名称:可扩展标记语言,标记又称为标签或元素,由标签组成的一门语言

XML的作用:

1.用于作为框架的配置文件
2.用于不同平台之间的数据交换
3.用来当成一个小型数据库使用

XML与HTML的区别:

区别

HTML

XML

功能

制作网页,主要用于表示层

用于配置文件,用于数据访问层

大小写

不区分大小写

区分大小写

语言严谨

不严谨,如果一个标签有开头没有结束,浏览器也可以解析

严谨,标签开头和结尾必须严格配对

可拓展性

没有可拓展性,所有标签都是固定好,每一个标签功能固定

所有标签都是人为创造的,可以拓展

XML语法包含的内容:

1.文档声明

2.标签元素Element

3.属性 Attribute

4.注释 Comment

5.转义字符(实体字符)

6.字符数据区(用于显示大量的特殊字符的时候)

7.处理指令(不使用了,因为是用来配置字体大小和颜色等)

XML文档声明:

<?xml version="1.0" encoding="UTF-8" ?>
<!--
文档声明格式:
version:版本号
encoding:编码格式
必须写在xml文件的第一行第一列
-->

二、XML的标签语法

分类

语法

有主体标签

<开始标签> 内容</结束标签>,eg:<name>ps</name>

无主体标签

<标签名/>,eg:<br/>

<?xml version="1.0" encoding="UTF-8" ?>
<!--
文档声明格式:
version:版本号
encoding:编码格式
必须写在xml文件的第一行第一列
-->
<person>

    <name>ps</name>
    <sex>nan</sex>
    <age/>

</person>

注意事项:

1.一个xml文件只能由一个跟标签,也就是所有内容必须都放到根标签内

2.标签中可以嵌套若干子标签,但是必须合理嵌套,不能交叉嵌套

3.开始标签和结束标签必须成对出现

标签命名规则:

1.标签区分大小写
2.不能以数字开头,只能以中文、字母或下划线
3.标签名不能包含空格
4.标签中不要使用(:),因为这是(:)是命名空间的一个特殊符号

XML属性和注释:

属性语法

注意事项

<开始标签 属性名=属性值>内容</结束标签>

属性值必须使用引号括起来,单引号和双引号都可以

属性必须写在开始标签中,多个属性之间空格分割

注释格式

注意事项

<!-- 注释内容 -->

注释不能嵌套注释

XML转义字符:

语法:以(&)开头以(;)结尾

说明

字符

转义字符

小于

<

&lt;

大于

>

&gt;

双引号

“”

&quot;

单引号

‘’

&apos;

与符号

&

&amp;

CDATA区:

Chrarcter Data 字符数据区

CDATA区作用:

保证数据原样输出,不被解析

CDATA区格式:

<![CDATA[ 字符数据 ]]>


<person>
    <name>ps</name>
    <sex>nan</sex>
    <age/>

    <sql>
    	<!--这样编写的语句就会被原样输出-->
        <![CDATA[select * from mysql where id > 50]]>
    </sql>

</person>

三、XML约束

为什么要用约束:

如果不使用约束,xml文档中的标签、标签内容、标签属性等可以随意填写,造成了很多的无效

作用:

1.用来约束xml文档的结构
2.让xml文档书写更加规范

xml约束的分类:

1.DTD约束
2.Schema约束

四、DTD约束

语法:

<!ELEMENT 元素名 元素的类别或内容>

元素的类别与三种:

(#PCDATA):		Parsed Character Data 被解析的字符串数据,即文本内容
EMPTY:			表示一个空的标签 如:<BR/> 的DTD为:<!ELEMENT BR EMPTY>
ANY:			任意内容都可以

元素的内容修饰符号:

?  	 :	表示出现0或1次
* 	 :	表示出现0或n次
+	 :	表示出现1或n次
()	 :	用来给元素分组
| 	 :	表示在列出的对象中选择一个
, 	 :	表示组中的元素必须按照指定的顺序出现

属性约束语法:

<!ATTLIST 元素名
    属性名	属性类型	类型选项
    属性名	属性类型	类型选项>

使用样例:

<!--dtd约束文件-->
<!ELEMENT BookShelf (Book+)>
<!ELEMENT Book (title,author,price)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!ATTLIST author
        name CDATA #REQUIRED
        age CDATA #IMPLIED
        job CDATA #FIXED "程序员"
        hobby CDATA "旅游">



<!--xml文件-->

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE BookShelf SYSTEM "BookShelf.dtd">
<!--
文档声明格式:
version:版本号
encoding:编码格式
必须写在xml文件的第一行第一列
-->
<BookShelf>
    <Book>
        <title>西游记</title>
        <author name="吴承恩" age="18">吴承恩</author>
        <price>9.9</price>
    </Book>
</BookShelf>

导入DTD约束语法:

语法

说明

<!DOCTYPE 根元素 SYSTEM 'DTD文件路径'

不公开使用,私有的

<!DOCTYPE 根元素 PUBLIC 'DTD描述信息' 'DTD文件路径'

公开使用,使用范围广

五、Schema约束

概述:

约束文件扩展名 (XML Schema Definition) XML 模式定义 : xsd

约束文件本身也是XML文件,所以也有根元素,根元素的名字叫 : schema

两个概念:

模式文档:制定约束的XML文档(类似于:类)。

实例文档:被约束的XML文档(类似于:对象)。

注意:

Schema约束可以两个约束一个xml文档,而DTD只能一个约束一个

命名空间:

解决标签命名冲突的问题,通过设定前缀

命名空间概述

说明

定义位置

默认文档的根标签中

定义格式

targetNamespace=“命名空间名称”

引入位置

在实例文档的根标签中

引入格式

xmlns:前缀=“命名空间名称”

总结:

虽然schema功能强大,但是编写比DTD复杂很多,由于开发中很少会自己编写schema文件

所以只要能在看懂xsd的情况下,编写出正确的xml文件即可

六、XML解析

概述:

通过Java代码从xml文档中获取数据的过程

XML解析方式:

DOM方式解析:

概述:一次性加载整个xml文档到内存中,会在内存中生成一个DOM树
优点:可以对树上的节点对象进行增删查改
缺点:如果XML文档内容比较多,则占据比较大的内存

SAX方式解析:

概述:从上往下一行一行解析,解析一行释放一行
优点:占据内存少
缺点:只能读取数据,不能增删改操作

七、Dom4j:

解析方式:

采用DOM的方式解析

Dom4j的解析原理:

一次性加载整个xml文档到内存中,会在内存中生成一个DOM树

Dom树的组成元素:

Document	:	文档对象,代表整个XML文档,必须先获得该对象才能获得XML文档的数据
Element		:	元素对象(标签对象),每个标签都是一个Element对象
Attribute	:	属性对象,标签中的每一个属性都是一个attribute对象
Text		:	文本对象,标签体中的文本内容,都是一个text对象
Node		:	节点对象,DOM树上的每一个元素都是一个Node对象
Comment		:	注释对象