没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
使用 JAXP 处理 XML 文件
作者:贾波
作者简介
贾波,程序员,您可以通过mosaic@hotmail.com与他联系。
简介
JAXP 是 Java API for XML Processing 的缩写。JAXP API 主要的部分在
javax.xml.parsers 这个包中。在这个包中,向用户提供了两个最重要的工厂类,
SAXParserFactory 和 DocumentBuilderFactory,相应地,提供了 SAXParser 和
DocumentBuilder 两个类。
SAX 是由 XML-DEV 定义的;DOM 是由 W3C 定义的。让我们来看看这些 API 库。
• javax.xml.parsers
JAXP API, 定义个 SAX 和 DOM 的一个通用接口
• org.w3c.dom
定义了 DOM 中的所有组件
• org.xml.sax
定义了 SAX 的所有 API
• javax.xml.transform
定义了 XSLT API,使用它,你可以将 XML 转化为一般的可视的页面。
SAX 指一种"事件驱动"的处理方式,他对 XML 文件连续地一个对象一个对象地操
作,由于它的这个特点,所以它可以用于服务器端或者对速度有特殊要求的地方。
相比较而言 DOM 是个使用起来更简单些。他是将所有个 XML 数据全部读到内存里
面,然后使用"树"结构将这些数据组织起来,用户可以对 XML 的数据进行任意的
操作。
至于 XSLT,我们在这里就不介绍太多,如果感兴趣请参考相应的资料。我们还
是先看看 SAX。
SAX
SAX 的框架轮廓
系统是从 SAXParserFactory 产生 parser 的实例开始的。一个 parser 中包含了
一个 SAXReader 对象,当这个 parser 调用 parse 方法的时候,这个 reader 就
调用回调方法已实现这个应用;而这些方法呢?是定义在 ContentHandler,
ErrorHandler,DTDHandler and EntityResolver 接口中的。
以下是对 SAX API 库的概述:
• SAXParserFactory
SAXParserFactory 是一个根据系统属性生成 parser 实例的一个对象。
• SAXParser
SAXParser 是一个定义了不同种类的 parser()方法的接口。一般而言,你
向 parser 传 XML 数据后,使用 DefaultHandler 再来处理,系统就会调用
一些合适的方法来处理 XML 文件,这样的一种处理方法是最为简单的。
• SAXReader
SAXParser 包含了一个 SAXReader,通常你是不需要关心它的,但是当你
要使用 SAXReader 的 getXMLReader()方法的时候,你就需要配置他。 简
言之,SAXParser 就是一个与 SAX 事件通讯的处理器,这样,你就可以使
用自定义的 handler。
• DefaultHandler
DefaultHandler 实现了 ContentHandler, ErrorHandler, DTDHandler,
和 EntityResolver 接口 (当然其中有一些 null 方法), 如果你感兴趣的
话,你可以在你的程序中重载它。
• ContentHandler
当读到 XML 的 tag 时,就会调用到这个接口中的 startDocument,
endDocument, startElement, 和 endElement 方法。同时,这个接口还
定义了 characters 和 processingInstruction,方法,分别地,当 parser
遇到 XML 的 element 或者 inline processing instruction 的时候调用。
• ErrorHandler
当遇到不同类型的错误的时候分别调用相应的"错误"方法,这些方法包
括:error,fatalError 和 warning。
• DTDHandler
该接口所定义的方法只用在处理 DTD 信息的时候。
• EntityResolver
给接口中的 resolveEntity 方法只在 parser 遇到 URI 标识数据的时候才
调用。
更详细地 api 介绍,请参看 SAX 的官方 API 文档。
例子:
在我们这个例子中,我们处理一个 xml 文件,然后将其值 set 到对象中。这是一
个非常常用的使用情况。以下就是我们需要处理的 xml 文件。
Test.xml
<?xml version="1.0" ?>
<customers>
<customer>
<id>#001</id>
<name>Micke</name>
<address>Najing</address>
</customer>
<customer>
<id>#002</id>
<name>Car</name>
<address>Suzhou</address>
</customer>
<customer>
<id>#003</id>
<name>Jimmy</name>
<address>ChengDu</address>
</customer>
<customer>
<id>#004</id>
<name>Henry</name>
<address>Xi'an</address>
</customer>
</customers>
剩余12页未读,继续阅读
资源评论
johney2007
- 粉丝: 2
- 资源: 40
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功