xml基础及其解析原理

XML知识

XML(ExtensibleMarkupLanguage),是W3C组织发布和维护的。

XML允许用户自定义细节,标签用来描述一段数据,分为开始标签和结束标签。XML主要用来存储数据和用作配置文件信息。

一个XML文件分为如下几部分内容:

1.文档声明

2.元素

3.属性

4.注释

5.CDATA区、特殊字符

6.处理指令(processinginstruction)

XML文档声明:

<?xmlversion="1.0"encoding="UTF-8"standalone="yes"?>

Standalone指明文档是否是独立的

XML元素指XML文件中出现的标签,一个标签分为开始标签和结束标签,一个标签有如下几种书写形式,例如:

包含标签体:<a>www.itcast.cn</a>

不含标签体的:<a></a>,简写为:<a/>

注意:

对于xml标签中出现的所有空格和换行,xml解析程序都会当做便签内容处理。Java获取后可能需要用trim()过滤。

Xml元素区分大小写;不能以数字或下划线开头;不能以xml(或Xml、XML等)开头;不能包含空格;名称中间不能包含冒号。

一个标签可以有多个属性,每个属性都有它自己的名称和取值,例如:

<inputname=“text”>

属性值一定要用双引号(")或单引号(')引起来

定义属性必须遵循与标签相同的命名规范

多学一招:在XML技术中,标签属性所代表的信息,也可以被改成用子元素的形式来描述,例如:

<input>

<name>text</name>

</input>

Xml的注释的形式<!--注释-->

Xml声明之前不能有注释;

Xml注释不能嵌套。

CDATA区:xml文档中有些内容不希望让解析引擎解析执行,而是当做原始数据处理,此时可以将这些内容放到CDATA区中。

<![CDATA[

<安徽>

<安庆>

</安庆>

<合肥>

</合肥>

</安徽>

]]>

Xml可以使用xml-stylesheet指令,通知xml解析引擎应用css文件来显示文档内容。例如:

xml-stylesheettype="test/css"href=""?>

转义字符

Xml约束:在XML技术里,可以编写一个文档来约束一个XML文档的书写规范,这称之为XML约束。常用的约束技术:

XMLDTD、XMLSchema

XMLDTD不能具体约束到数字,而只能约束到字符串,例如价格为必须为数字,DTD则只能约束到字符串。DTD现在没有Schema有前景。

Xml编程:

Xml解析方式分为两种:dom和sax

dom:(DocumentObjectModel,即文档对象模型)是W3C组织推荐的处理XML的一种方式。

sax:(SimpleAPIforXML)不是官方标准,但它是XML社区事实上的标准,几乎所有的XML解析器都支持它。

XML解析器Crimson、Xerces、Aelfred2

XML解析开发包Jaxp(sun官方)、Jdom、dom4j

JAXP开发包是J2SE的一部分,它由javax.xml、org.w3c.dom、org.xml.sax包及其子包组成。在javax.xml.parsers包中,定义了几个工厂类,程序员调用这些工厂类,可以得到对xml文档进行解析的DOM或SAX的解析器对象。

Dom与sax比较:

Dom比较消耗内存,因为他要把整个文档变成document对象,适合于xml的增删改查(crud);

Sax是逐行读取解析,占用内存少,解析速度快,缺点是只适合作文档的读取,不能做文档的crud。

使用dom解析,如果文档很大,会导致jvm内存溢出。Jvm默认最大内存64M。在eclipse中的runconfigurations中arguments中vmarguments中输入-Xmx80m(配置为80M)。

DOM解析编程:

遍历所有节点

查找某一个节点

删除结点

更新结点

添加节点

SAX采用事件处理的方式解析XML文件,利用SAX解析XML文档,涉及两个部分:解析器和事件处理器:

解析器可以使用JAXP的API创建,创建出SAX解析器后,就可以指定解析器去解析某个XML文档。

解析器采用SAX方式在解析某个XML文档时,它只要解析到XML文档的一个组成部分,都会去调用事件处理器的一个方法,解析器在调用事件处理器的方法时,会把当前解析到的xml文件内容作为方法的参数传递给事件处理器。

事件处理器由程序员编写,程序员通过事件处理器中方法的参数,就可以很轻松地得到sax解析器解析到的数据,从而可以决定如何对数据进行处理。

sax解析原理图:

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇