WEB开发网
开发学院软件开发Java JAXP 全面介绍,第 1 部分:XML 处理工具包使解析... 阅读

JAXP 全面介绍,第 1 部分:XML 处理工具包使解析和验证变得更容易

 2010-04-06 00:00:00 来源:WEB开发网   
核心提示: SAX 是事件驱动的 XML 处理方法,它由许多回调组成,JAXP 全面介绍,第 1 部分:XML 处理工具包使解析和验证变得更容易(4),例如,startElement() 回调在每次 SAX 解析器遇到元素的起始标记时被调用,但仍需要重新编译类,这显然不是最好的解决方案,characters

SAX 是事件驱动的 XML 处理方法。它由许多回调组成。例如,startElement() 回调在每次 SAX 解析器遇到元素的起始标记时被调用。characters() 回调为字符数据所调用,然后 endElement() 为元素的结束标记所调用。许多回调用于文档处理、错误和其他词汇结构。您明白了。SAX 程序员实现一个 SAX 接口来定义这些回调。SAX 还提供一个叫做 DefaultHandler 的类(在 org.xml.sax.helpers 软件包中)来实现所有这些回调,并提供所有回调方法默认的空实现。(您将看到,这对于下一节 处理 DOM 中讨论 DOM 是重点。)SAX 开发人员只需要继承该类,然后实现需要插入特定逻辑的方法。所以 SAX 中的关键是提供这些各种回调的代码,然后让解析器在适当的时候触发其中的一个。下面是典型的 SAX 例程:

使用特定开发商的解析器实现来创建 SAXParser 实例。

注册回调实现(例如,通过使用继承 DefaultHandler 的类)。

开始解析并在回调实现启动时停止。

JAXP 的 SAX 组件提供了完成所有这些操作的简单方法。没有 JAXP,SAX 解析器实例要么必须从开发商类(比如 org.apache.xerces.parsers.SAXParser)中直接实例化,要么必须使用一个叫做 XMLReaderFactory 的 SAX 帮助类(也在 org.xml.sax.helpers 软件包中)。第一种方法的问题很显然:它不是开发商中立的。第二种方法的问题在于,工厂需要使用解析器类的 String 名称作为参数(又是 Apache 类 org.apache.xerces.parsers.SAXParser)。可以通过传递不同的解析器类作为 String 而更改解析器。使用该方法,如果更改解析器名称,则不需要更改任何导入语句,但仍需要重新编译类。这显然不是最好的解决方案。如果能够不重新编译类而更改解析器就方便多了。

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:JAXP 全面 介绍

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接