Javaweb之xml
XML:全称为Extensible markup language,意思是可扩展的标记语言.
Xml主要有两种作用:存放数据和作为配置文件,
Xml文件的注意:
Xml文件扩展名必须为xml
Xml内容必须满足以下要求:
固定的文档声明
合格的元素和属性
正确的注释
符合要求的特殊字符编写规则.
文档声明:
<?xml version=”1.0” encoding=”utf-8”?>
1,文档声明必须为<?xml开头,以?>结束
2,文档声明必须从文档的0行0列位置开始
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公司提供支持DOM和SAX开发包.
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()获得当前元素的文本内容.