xml基础及其解析原理

本文介绍了XML的基本知识,包括文档声明、元素、属性、注释、CDATA区和处理指令。XML用于存储数据和配置信息,其标签区分大小写,且有严格的命名规范。解析XML有DOM和SAX两种方式,DOM一次性加载整个文档,适合CRUD操作,但内存消耗大;SAX逐行读取,内存占用小,适合读取操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

XML知识

XML(Extensible Markup Language),是W3C组织发布和维护的。

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

 

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

1.文档声明 

2.元素

3.属性

4.注释  

5.CDATA区 、特殊字符 

6.处理指令(processing instruction) 

 

 

XML文档声明:

<?xml version="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等)开头;不能包含空格;名称中间不能包含冒号。

 

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

<input name=“text”>

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

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

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

<input>

  <name>text</name>

</input>

 

 

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

Xml声明之前不能有注释;

Xml注释不能嵌套。

 

 

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

<![CDATA[

  <安徽>

        <安庆>

        </安庆>

        <合肥>

        </合肥>

    </安徽>

]]>

 

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

<?xml-stylesheet type="test/css" href="" ?>

 

转义字符

 

 

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

XML DTD 、XML Schema

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

 

Xml编程:

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

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

sax: (Simple API for XML) 不是官方标准,但它是 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中的run configurations中arguments中vm arguments中输入-Xmx80m(配置为80M)。

 

DOM解析编程:

遍历所有节点

查找某一个节点

删除结点

更新结点

添加节点

 

 

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

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

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

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

 sax解析原理图:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值