天天看点

XML-精讲

XML

第一章 XML概念及基本语法

1-1 什么是XML?都有哪些版本?

XML为可扩展标记语言,全称为Extensible Markup Language。

XML语法上和HTML比较相似,但HTML中的元素是固定的,而XML的标签是可以由用户自定义的。

<servlet>
           

W3C在1998年2月发布1.0版本,2004年2月又发布1.1版本,但因为1.1版本不能向下兼容1.0版本,所以1.1没有人用。

我们现在实际项目开发中所使用的都是1.0版本,1.1版本不予考虑。

1-2 XML用处

(1) 数据传输(数据传输媒介)

场景1

A公司 java语言

Person p = new Person(“A0001”,”zs”,23);

{“id”:”A0001”,”name”:”zs”,”age”:23}

{id:”A0001”,name:”zs”,age:23}

将p转换成xml文档

person.xml

A0001

zs

23

B公司 其他面向对象语言 C# C++…

想要A公司的p对象中的数据,由于语言不通,不能用p

接收person.xml

B公司解析person.xml中的数据

A0001 zs 23

拿到以上数据之后,再将以上数据打包到自己语言的对象中就可以了.

场景2:

后端(java)连接数据库,取得数据

将数据传输到前端(html)

前端接收数据!!!

使用什么语言来接收数据???

示例:从数据库表中取得 A0001 zs 23

在后台封装到p对象中

Person p = new Person(“A0001”,”zs”,23);

后台将p对象传输到前端js

js来接收p对象

将p转换成xml文档

js解析xml文档

var p = 解析xml得来的数据.

在未来的实际项目开发中,作为数据传输的媒介,xml语法冗长,外部解析插件支持性差,所以我们不用这种形式.

我们未来应用的最多的数据传输媒介的方式是json

(2)配置文件

xml作为配置文件来使用,在每一项技术中,xml的配置文件的作用都不相同.

比如在学习servlet/jsp的时候,我们要使用到的是叫做web.xml的配置文件.这个配置文件的作用是web开发的主配置文件.所有的servlet类必须经过在web.xml中进行注册之后,才能够使用.

在我们以后的框架的学习中,每一款框架都会要求有xml配置文件的应用,不同的框架对于xml配置的作用都是不同的.

1-3 XML语法

(1)创建普通文本文件,后缀名为xml

(2)声明

语法:

<?xml version="1.0" encoding="UTF-8"?>

解析:

a、文档声明必须以<?xml开头,必须以?>结尾

b、文档声明必须在文档中的0行0列

c、文档声明的3个属性

versioin属性:指定XML文档版本.必须属性,因为我们 不会选择1.1,只会选择1.0;

encoding属性:指定当前文档的编码。可选属性,默认 值是utf-8;

standalone属性:指定文档独立性。可选属性,默认值 为yes,表示当前文档是独立文档。如果为no表示当前文档不 是独立的文档,会依赖外部文件。

(3)元素

语法:

解析

a、元素是XML文档中最重要的组成部分,

b、普通元素的结构开始标签、元素体、结束标签组成。例如: 你好

c、元素体:元素体可以是元素,也可以是文本,例如:

你好

d、空元素:空元素只有开始标签,而没有结束标签,但元素必 须自己闭合.例如:

e、元素命名:
		区分大小写
		不能使用空格,不能使用冒号:
		不建议以XML、xml、Xml开头
		良好的XML文档,必须有一个根元素。
           

(4)属性

语法:

解析:

a、属性是元素的一部分,它必须出现在元素的开始标签中

b、属性的定义格式:属性名=属性值,其中属性值必须使用 单引或双引

c、一个元素可以有0~N个属性,但一个元素中不能出现同名 属性

d、属性名不能使用空格、冒号等特殊字符,且必须以字母开 头

(5)注释

语法:

解析:

与html一样,以“ ”结束。xml解析器会 自动忽略掉注释掉的xml代码。

(6)转义字符

<p>
	5&lt;3
</p>

	语法:
	&lt; 对应<小于号 
	&gt;对应>大于号 
	&amp; 对应&和 
	&apos; 对应' 单引号 
	&quot; 对应" 双引号
	解析:
	 a、因为很多符号已经被XML文档结构所使用,所以在元素				体或属性值中想使用这些符号就必须使用转义字符
	 b、xml中的转义字符与html中的使用方式一样
           

(7)CDATA区

如果我们表述的文本中出现了大量的需要转义的字符,如果一个一个进行转换,那么会非常麻烦,我们可以使用CDATA来完成,写在CDATA中的内容是不需要进行转义操作的.



	语法:
	<![CDATA[
		<><><><><><>>>>>><><><><><><&&&&&&’’’””””””””””””’>>
	]]>
           

第二章 XML约束

2-1 DTD约束

DTD(Document Type Definition),文档类型定义,用来约束xml文档。规定xml文档中元素的名称,子元素的名称及顺序,元素的属性等。

2-2 Schema约束

同DTD约束一样,也是用来约束xml文档用的技术。

从功能上讲,Schema约束要比DTD强大很多,是DTD 替代者

Schema本身也是xml文档,但Schema文档的扩展名为xsd,而不是xml。

创建包结构

XML-精讲
XML-精讲

2-3通过使用约束对web.xml进行搭建

见代码

2-4 面试题:XML与DTD、Schema的关系是什么

回答:dtd与schema也是xml,是传统xml文件的约束扩展

第三章 XML文档解析

3-1什么是XML文档解析

将xml文档中的元素、属性、文本内容进行拆解,我们获得 这些组件的过程就叫做xml的解析工作。

3-2 XML文档解析方式

(1)sax解析:逐行解析,只能查询。

(2)dom解析:一次性将文档加载到内存中,增删改查的操作 都可以。

3-3 常见的XML解析开发包

JAXP:sun公司提供支持DOM和SAX开发包

JDom:dom4j前身

dom4j:实际开发中最常用的解析开发包

3-4 使用dom4j技术解析XML案例

(1)导入jar包

dom4j-1.6.1.jar

(2)操作流程

dom4j 必须使用核心类SaxReader加载xml文档获得 Document,通过Document 对象获得文档的根元素,然后就可 以继续操作了。

(3)常用API

a、SaxReader对象

read(…) 加载执行xml文档

Document对象

getRootElement() 获得根元素

b、Element对象

elements(…) 获得指定名称的所有子元素。可以不指定 名称

element(…) 获得指定名称第一个子元素。可以不指定 名称

getName() 获得当前元素的元素名

getText() 获得当前元素的文本内容

(4)具体代码实现方式:

a.导入jar包

b.创建一个核心对象 SAXReader

new SAXReader();

c.将xml文档加载到内存中形成一棵树

Document doc=reader.read(文件)

d.获取根节点

Element root=doc.getRootElement();

e.通过根节点就可以获取其他节点(文本节点,属性节点, 元素节点)

获取所有的子元素

List list=root.elements()

3-5 dom4j技术的扩充–xpath的解析方式

(1)什么是xpath解析

(2)xpath常用方式

XML-精讲

3-6 XML与JSON的比较

XML和JSON都可以完成不同系统之间数据交换。

XML体积较大,解析难度较大,所以在现代开发中通常采用JSON进行数据交换,因为JSON体积小,解析简单,而XML通常充当系统当中的配置文件