JAVAWEB之xml

来源:互联网 发布:易语言整人源码大全 编辑:程序博客网 时间:2024/06/08 06:16

Javawebxml

 

XML:全称为Extensible markup language,意思是可扩展的标记语言.

Xml主要有两种作用:存放数据和作为配置文件,

 

Xml文件的注意:

Xml文件扩展名必须为xml

Xml内容必须满足以下要求:

固定的文档声明

合格的元素和属性

正确的注释

符合要求的特殊字符编写规则.

文档声明:

<?xml version=”1.0” encoding=”utf-8”?>

1,文档声明必须为<?xml开头,?>结束

2,文档声明必须从文档的00列位置开始

3,文档声明只有2个属性:

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

Encoding:指定当前文档的编码.可选属性,常用值是utf-8.

 

元素:element

<bean></bean>

元素是xml文档中最重要的组成部分

普通元素的结构开始标签,元素体,结束标签组成.:<hello>大家好</hello>

元素体:元素体可以是元素,也可以是文本,例如:<b><a>你好</a></b>

空元素:空元素只有开始标签,而没有结束标签,但元素必须自己闭合,<c/>

元素的命名:

区分大小写

不能使用空格,不能使用冒号

不建议以xml,XML,Xml开头

格式化良好的xml文档,必须只有一个根元素

 

属性:

属性attribute

<bean id=”” className=””>

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

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

一个元素可以有0-n个属性,但一个元素中不能出现同名属性.

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

注释:

Xml的注释,”<!--”开始,”-->”结束.注释内容会被xml解析器忽略.

 

转义符:

因为很多符号已经被xml文档结构所使用,所以在元素体或属性值中想使用这些符号就必须使用转义符,“<” < “>” >  “”” " “’” &apos  “&” &

 

CDATA:<![CDATA[任意内容]]>  

 

当大量的转义字符出现在xml文档中时,会使xml文档的可读性大幅度降低,这时如果使用CDATA段就会好一些

CDATA段中出现的”<” “>” “”” “’” “&”,都无需使用转义字符.这可以提高xml文档的可读性.

CDATA段中不能包含”]]>”,CDATA段的结束定界符.

XML的基本使用:

xml技术里,可以编写一个文档来约束一个xml文档的书写规范,这称之为xml约束.

常见的xml约束:DTD,Schema

目的:通过约束文档,可以编写xml文档(具有固定格式,规定的格式)

DTD约束:

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

 

Schema约束:

Schema是最新的xml文档约束;

Schema要比DTD强大很多,DTD替代者

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

Schema支持名称空间

 

 

命名空间:

命名空间(namespace):如果一个xml文档中使用多个schema文件,而这些schema文件中定义了相同名称的元素时就会出现名字冲突.这就像一个java文件中使用了import java.util.*import java.sql.*,使用Data类时,那么就不明确Data是哪个包下的Date.

总之名称空间就是用来处理元素和属性的名称冲突问题,java中的包是同一用途.如果每个元素和属性都有自己的名称空间,那么就不会出现名字冲突问题,就像是每个类都有自己所在的包一样.那么类名就不会出现冲突.

 

 

Xml解析之dom解析:

当将数据存储在xml,我们就希望通过程序获得xml的内容.

开发中比较常见的三种解析方式:

DOM:要求解析器把整个xml文档装载到内存,并解析成一个Document对象.

优点:元素与元素之间保留结构关系,故可以进行增删改查操作.

缺点:xml文档过大,可能出现内存溢出显现

SAX:是一种速度更快,更有效的方法.他逐行扫描文档,一边扫描一边解析.并以事件驱动的方式进行具体解析,没执行一行,都将触发对应的事件.

优点:处理速度快,可以处理大文件

缺点:只能读,逐行后将释放资源.

PULL:android内置的xml解析方法,类似SAX

 

解析器:就是根据不同的解析方式提供的具体实现.有的解析器操作过于繁琐,为了方便开发人员,有提供易于操作的解析开发包.

 

常见的解析开发包:

JAXP:sun公司提供支持DOMSAX开发包.

JDOM:dom4j兄弟

Jsoup:一种处理HTML特定解析开发包

Dom4j:比较常用的解析开发包,hibernate底层采用.

 

DOM解析原理及结构模型:

XML DOM将整个xml文档加载到内存,生成一个DOM,并获得一个Document对象,通过Document对象就可以对DOM进行操作.

DOM中的核心概念就是节点,在XML文档中的元素、属性、文本等,在DOM中都是节点!

 

 

 

使用dom4j解析xml文档:

使用dom4j,导入jar包  dom4j-1.6.1.jar

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

常用API:

SaxReader对象   read(..)加载执行xml文档

Document对象  getRootElement()获得根元素

Element对象

Elements(...)获得指定名称的所有子元素.可以不指定名称

Eleement(...)获得指定名称第一个子元素,可以不指定名称

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

attributeValue(..) 获得指定属性名的属性值

ElementText(...)获得指定名称子元素的文本值

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