目录
一.XML简介:
1.1 XML概括:
- XML即可拓展标记语言,主要作用是传输数据(很少用了,主要是JSON)和配置文件。同时XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言(可以自己定义标签)。XML是标准通用标记语言(SGML)的子集,非常适合Web传输。XML提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。
- XML和HTML不同,HTML是前端页面标签语言,是用来显示数据的,XML是用来传输数据的。
1.2 XML作用:
- XML可以作为配置文件,JavaEE框架,SSM框架 大部分都是使用的XML作为配置文件的。
- XML可以存储数据,作为数据交换的载体【使用XML格式进行数据的传输】
1.3 XML的组成:
一个标准的XML文件一般是由以下及部分组成:文档声明、元素、属性、注释、转义字符、字符区
二.XML基本使用:
2.1 文档的声明:
xml声明一般是xml文档的第一行;
文档声明必须为【<?xm】开头,以【?结束>】。
文档声明必须从文档的0行0列位置开始
<?xml version="1.0" encoding="UTF-8"?>
2.2 标签 元素:
元素是XML中最重要的组成部分,
标签分为开始标签和结束标签,开始标签<begin>的话,那么结束标签必须是配套的</begin>来结束
开始标签和结束标签中间写的是标签内容,标签内容可以是文本,也可以是其他子标签【子标签】
如果标签没有任何内容,那么可以定义为空标签<begin/>
标签可以嵌套,但是不能乱嵌套,保证父与子的盒子的逻辑关系
一个XML文件只有一个根标签
标签名必须符合标识符的命名规则
命名规则:
不能使用XML、xMl、XmL....类似的单词
不能使用空格、冒号等特殊符号
区分大小写
数字不能开头
2.3 注释:<!-- 注释的内容 --> :
XML注释,以【<!--】开头,以【-->】结尾
注释不能嵌套
2.4 属性:
1.位置:属性是元素的一部分,它必须出现在元素的开始标签中,不能出现在结束标签中
2.格式:属性的定义格式【属性名="属性值"】,其中属性值必须使用单引号或双引号括起来
3.一个元素可以有0-n个属性,但一个元素中不能出现同名的属性
4.属性名必须要符合标识符的命名规则
2.5 约束:
根据DTD约束正确的书写XML,在XML技术中可以编写一个文档来约束一个XML文档的书写规范,这就称之为XML约束。约束文档定义在XML文件种允许出现的元素/标签名称、属性以及元素出现的顺序等等。有两种约束:【DTD约束,文件后缀.dtd】、【Schema约束,文件后缀.xsd】。
注意:约束文档不需要我们去写,我们只要按照约束文档的要求去写XML就可以了
重点介绍 Schema约束:
Schema和DTD是一样的,也是一种XML文件的约束。Schema约束的后缀格式是 .xsd
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.donglan.com"
elementFormDefault="qualified">
<!-- element:表示元素,也就是对元素进行约束-->
<!-- 跟标签的名称:书架 -->
<xs:element name='书架'>
<!-- complexType:复杂标签 -->
<!-- 书架是一个复杂标签-->
<xs:complexType>
<!-- squence:表示序列的意思,在这里要按照顺序出现 -->
<!-- maxOccurs:最多出现几次,minOccurs:最少出现几次-->
<xs:sequence maxOccurs='2' minOccurs="1">
<!-- 书架的子标签的名称是书-->
<xs:element name='书'>
<!--书 标签 又是一个复杂标签-->
<xs:complexType>
<!-- 书标签的子标签必须按照顺序出现-->
<xs:sequence>
<!-- 书标签的子标签名是 书名,类型为String-->
<!-- 书标签的子标签名是 作者,类型为String-->
<!-- 书标签的子标签名是 售价,类型为String-->
<xs:element name='书名' type='xs:string'/>
<xs:element name='作者' type='xs:string'/>
<xs:element name='售价' type='xs:double'/>
</xs:sequence>
<!-- attribute 表示的是:属性,也就是对属性的约束,optional:表示客源,required:就是必选-->
<xs:attribute name="bid" type="xs:int" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
XML文件:
<书架 xmlns="http://www.donglan.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.donglan.com bookSchema.xsd" >
<书>
<书名>斗破苍穹</书名>
<作者>土豆</作者>
<售价>19.9</售价>
</书>
<书>
<书名>斗罗大陆</书名>
<作者>唐家三少</作者>
<售价>20.9</售价>
</书>
</书架>
XML解析:
常见的三种解析方式:
1.DOM:要求解析器把整个XML文件装载到内存,并解析成一个Document对象
优点:元素与元素之间保留结构关系,我们可以很方便的对其进行增删改查
缺点:XML文档过大的话,可能出现内存溢出
2.SAX:是一种速度更快,更有效的方式,它是逐行扫描,一边扫描一遍解析,并且以时间驱动的方式进行具体的解析,每执行 一行,都会触发对应的事件
优点:不会出现内存问题,可以处理大的文件
缺点:只能读,不能回写
3.PULL:Android内置的XML解析方式,类似于SAX解析包:
就是根据不同的解析方式提供具体实现,有的解析器过去繁琐,为了方便开发人人员,会有提供易于操作的解析开发包
Dom4j:比较简单的解析开发包(日常开发包中用的次数最多的)DOM解析原理以及结构模型:
解析原理:XML DOM 将整个XML文档加载到内存,生成一个DOM树,并且获得一个Document对象
通过Document对象就可以对DOM进行操作
Dom4j的基本使用:
使用步骤:
1.导包
2.把jar导入到模块项目中,比那个添加classpath路径依赖
3.创建解析器对象
4.使用解析器读取xml文档,生成Document对象
5.根据根元素获取下面的子元素/属性.
常用方法:
创建解析器对象:SAXReader saxReader = new SAXReader();
解析器读取文件的方法:Document document = saxReader.read("day16\\src\\Books.xml");
Document的方法:
Element rootElement = document.getRootElement();
Element的方法:
- List elements():获取当前元素的值
- String getName():Node的方法【父类方法】,获取元素的元素名称
- String attributeValue(String var1):获取当前元素下某个属性的值
- String getText():获取当前元素的文本值
- Element element(String var1):根据元素名称获取指定元素【有多个的话就获取第一个】
- String elementText(String var1):获取指定子元素的文本值,参数是子元素名称
1.dom4j的下载地址:dom4j下载地址
2.导入jar包
3.创建一个maven项目
4.创建XML文件:
<?xml version="1.0" encoding="UTF-8" ?>
<!--文档声明
XML的文档声明是可选的,也就是可以不写,但是日常生活开发中大家都会写
XML文档声明如果写了,它必须放在XML文档的第一行第一列,必须以<?xml开头 以?>结尾,而且必须包含两个属性
一个是version,表示XML的版本
一个是encoding,表示XML的编码
-->
<!--
元素是XML的重要组成部分,元素也被称为标签
每个XML文件必须要有一个根标签
标签有开始标签和结束标签组成,开始标签和结束标签可以写标签,也可以是文本字符串
标签可以嵌套使用,但是不能随便嵌套
标签名必须准守命名规则和命名规范
-->
<!--
属性是标签的组成部分,属性只能定义在开始标签中,不能定义在结束标签中
属性定义的格式:属性名=属性值,属性值需要使用""包含起来
开始标签中可以定义多个属性,但是多个属性的属性名不能相同
属性名必须准守命名规则和命名规范
-->
<users>
<user id="10001" country="Chinese" source="Android">
<id>10001</id>
<name>admin</name>
<password>111111</password>
</user>
<user id="10002" country="Chinese" source="ios">
<id>10002</id>
<name>tony</name>
<password>666666</password>
</user>
</users>
5.在resource文件下面创建Java文件解析XML文件:
<?xml version="1.0" encoding="UTF-8" ?>
<!--文档声明
XML的文档声明是可选的,也就是可以不写,但是日常生活开发中大家都会写
XML文档声明如果写了,它必须放在XML文档的第一行第一列,必须以<?xml开头 以?>结尾,而且必须包含两个属性
一个是version,表示XML的版本
一个是encoding,表示XML的编码
-->
<!--
元素是XML的重要组成部分,元素也被称为标签
每个XML文件必须要有一个根标签
标签有开始标签和结束标签组成,开始标签和结束标签可以写标签,也可以是文本字符串
标签可以嵌套使用,但是不能随便嵌套
标签名必须准守命名规则和命名规范
-->
<!--
属性是标签的组成部分,属性只能定义在开始标签中,不能定义在结束标签中
属性定义的格式:属性名=属性值,属性值需要使用""包含起来
开始标签中可以定义多个属性,但是多个属性的属性名不能相同
属性名必须准守命名规则和命名规范
-->
<users>
<user id="10001" country="Chinese" source="Android">
<id>10001</id>
<name>admin</name>
<password>111111</password>
</user>
<user id="10002" country="Chinese" source="ios">
<id>10002</id>
<name>tony</name>
<password>666666</password>
</user>
</users>
注意点:
不要忘记创建项目之后,要在pom.xml文件下面配置依赖:
<dependencies>
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
</dependencies>