XML相关知识点
Posted lxrm的博客空间
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XML相关知识点相关的知识,希望对你有一定的参考价值。
本文内容:
一、XML语言概述
1.1 XML和html的区别
1.2 XML的常用场景
二、XML文件的基本语法知识(如何编写一个XML文件)
三、如何使用CSS或者XSL来控制XML文件的显示样式
四、如何解析一个XML文件(java中直接提供的两种XML文档解析方式)
4.1概述
4.2DOM法解析*.xml
4.3SAX法解析*.xml
4.4xml文件两种解析方法的比较(DOM和SAX的比较)
五、对用于XML文件解析(读取、写/修改)的Java API的进一步封装(用于xml文件解析的三方组件,需要手动导入相应jar包才可以使用其提供的API)
5.1概述
5.2 JDOM(由Jason Hunter和Brett Mclaughlin联合发布)
5.3 DOM4J(由SourceForge发布)
一、XML语言概述:
1.1 XML和HTML的区别
-
-
HTML和XML都是由SGML发展而来的,但是两者又有很多的不同之处。其中最大的不同便是:
-
HTML中的元素都是固定的,且以显示为主
- XML中的元素不是固定的,都是程序员自定义的,主要以数据保存为主
-
- 实例:由下面的例子可以看出,HTML中的标签都是固定的,是由HTML标准定义好的,每种标签怎么写,拥有什么含义都是HTML标准中已经定义好的,要想编写出一个能够运行的HTML文件就必须按照HTML规则来使用相应的标签,并且按照HTML语法要求来写。而XML中的元素(标签)则是由程序员来根据实际需求自定义的,XML中的标签的标识符怎么写,各个标签代表什么意思,完全都是由程序员来定义的。
-
上述例子中HTML页面中的<html> <head> <title> <body> <ul> <li> 等标签都是HTML标准中已经定义好的,HTML文件中程序员只能使用这些标签,不能使用其他标签
-
上述例子中XML文件的<addresslist> <linkman> <name> <id> <company> <email> <tel> <site> 都是程序员自己定义的,程序员还可以在该XML文件中添加更多的自定义标签
-
XML文件中除了含有自定义标签之外,还必须含有一个文件头来表示这个文件是XML文件,这个文件头是必不可少的,如下:
<?xml version="1.0" encoding="utf-8" standalone=“”?> <自定义标签1> ....其他自定义标签... </自定义标签1>
这个文件头规定了该XML页面的一些属性:如version规定了当前xml版本,encoding规定了该xml页面使用的编码方式,standalone表示该xml文件是否是独立显示的(XML文件可以结合CSS或者XSL来控制xml文件的显示样式)
-
1.2 XML的常用场景
-
- 数据交换
- 系统配置
- 内容管理
二、XML文件语法知识(编写第一个xml文件)
- 首先,所有的XML文件都必须含有文件头(即前导区)和数据区,前导区用于定义该XML文件的一些属性,数据区即为该XML文件的有效内容
- 前导区:
-
<?xml version="1.0" encoding="utf-8" standalone=“”?>
-
这个文件头规定了该XML页面的一些属性:如version规定了当前xml版本,encoding规定了该xml页面使用的编码方式,standalone表示该xml文件是否是独立显示的(XML文件可以结合CSS或者XSL来控制xml文件的显示样式)
- 前导区的三个属性必须按照version encoding standalone的顺序来写,否则该XML编译时会出错
-
- 数据区:
- 数据区就是开发人员自定义的一些标签了,他们的标识符、含义都是由开发者自行定义的
- 所有的数据区必须有一个根元素,一个根元素下可以存放多个子元素,且要求每一个元素必须完结(即</**>)
- XML中的每一个标记都是区分大小写的
- 自定义标签也可以拥有属性,但是属性的值必须用“”括起来。如果一个自定义标签有多个自定义属性,则属性之间用空格隔开
- 什么时候用自定义标签,什么时候用自定义属性?(答:一般不建议使用自定义属性。因为如果该xml文件需要结合CSS或XSL来显示的话,XML文件的标签属性的值是无法显示的。)
- 数据区的自定义标签要赋值,赋值时有一些特殊符号必须使用转义字符来表示:
-
XML文件内部注释:使用CDATA添加注释。
-
当XML解析器处理到CDATA标识符处时,就知道这一块实际上只是注释,所以解析器不会解析CDATA内部所包含的内容。
-
语法:<![CDATA[注释(该部分内容不会被XML解析器解析)]]>
-
-
如上所述,XML数据区的标签是可以由开发者自由定义的,如果要对一个XML文件中经常出现的元素或属性进行严格的定义,则需要使用DTD和Schema技术。
-
如,Spring的配置文件*.xml中,<bean>标签专门用于定义bean,至于它的bean标签就是根据DTD技术定义的。
-
- xml文件实例:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml-stylesheet type="text/css" href="../css/test.css"?> <linklist> <id>001</id> <name chinese="yes">lxrm</name> <email>123@qq.com</email> <textbook><<Java Web开发实战经典>></textbook> <![CDATA[ ..注释.. CDATA中包含的所有内容都不会被XML解析器解析 相当于HTML中的<!-- --> ]]> </linklist>
三、通过CSS或者XSL来控制XML文件内容的显示样式
概述:如果xml文件前导区定义的standalone=“yes”,那么该XML文件运行后显示结果就如本文第二部分展示的那样,只是将数据区的内容以树的形式展示出来。
如果将xml绑定了其他CSS文件或者XSL文件,则该XML文件中的内容就可以按照CSS或XSL中定义的格式来显示。
实例:
-
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml-stylesheet type="text/css" href="../css/test.css"?> <linklist> <id>001</id> <name chinese="yes">lxrm</name> <email>123@qq.com</email> </linklist>
@CHARSET "UTF-8"; id{ display:block; color:red; font-weight:bold; font-size:20pt; } name,email{ dispaly:block; color:blue; font-weight:normal; font-size:16pt; }
四、XML文件的解析
4.1 概述:
-
- XML文件有多种解析方式,如DOM解析、SAX解析法
4.2 DOM解析*.xml文件
基于DOM解析的XML分析器 | |
*.xml——>DOM树 | |
优点:支持随机访问,即支持应用程序在任何时候随机访问XML文档的任何一部分内容 | |
缺点:
|
|
|
|
基于DOM的XML文件解析器,所提供的DOM接口:
|
|
1. 读取*.xml文件:(编程思路)
2.写*.xml文件:(编程思路)
|
|
在应用程序中使用基于DOM的XML文件解析器解析*.xml文件,并且调用该XML文件解析器提供的DOM接口获取xml文件的内容,并做出后续操作:
|
4.3 SAX法解析*.xml文件
SAX法解析*.xml文件 |
原理:
|
优点: 对内存的需求不会随着*.xml文件的大小而改变,也就是说,即使*.xml文件很大,SAX解析法依然可以使用,因为SAX解析法对内存的需求不大 |
缺点:
|
SAX法构造*.xml文件解析器:(编程思路)
|
示例一:使用SAX解析方法解析d:/testDOM.xml文件(读取该文件内容,并且将他们在后台输出)
|
4.4 DOM解析法和SAX解析法的比较
基于DOM解析的XML分析器 | 基于SAX解析法的xml文件解析器 | |
原理:将整个xml文件转化成一个DOM树,并且放到内存中 |
原理:
|
|
优点: 支持随机访问,即支持应用程序在任何时候随机访问XML文档的任何一部分内容 |
优点: 对内存的需求不会随着*.xml文件的大小而改变,也就是说,即使*.xml文件很大,SAX解析法依然可以使用,因为SAX解析法对内存的需求不大 |
|
|
缺点:
|
|
DOM法解析*.xml,编程实现: 1.读取*.xml文件
2.java程序中修改*.xml文件(或者新建一个*.xml文件)
|
SAX法解析*.xml文件,编程实现:
|