当前位置: 首页 > 工具软件 > JAXP > 使用案例 >

Java job interview:Java XML程序设计JAXP支持 DOM、SAX、XSLT

张子墨
2023-12-01

●JAXP(Java API for XMLProcessing,意为XML处理的Java API)是Java XML程序设计的应用程序接口之一,它提供解析和验证XML文档的能力。JAXP是在Java社区进程下开发的,包括JSR 5 (JAXP 1.0)和 JSR 63 (JAXP 1.1和1.2)两个规范。
●JAXP解析XML的三种基本接口为:
●文档对象模型解析接口或DOM接口
●XML简单API解析接口或SAX接口
●XML流API或StAX接口(是JDK 6的一部分,为JDK 5提供单独的包)
●除了解析接口,JAXP还提供了XSLT接口用来对XML文档进行数据和结构的转换。
●XSLT(可扩展样式表转换语言)允许将XML文档转换为数据其他形式。应用程序使用javax.xml.transform包中的接口可以进行XSLT转换。接口最初被称为TrAX (Transformation API for XML),是由许多Java XSLT处理器的开发人员通过非正式协作开发的。
●JAXP定义了javax.xml.transform.Source和javax.xml.transform.Result两个抽象接口来表示转换的输入和输出。某种程度上,这是非常规使用Java接口,这是因为并不期待一个处理器会接受任何实现该接口的类,每一个处理器可以选择支持那些Source和Result的处理。实际上所有JAXP处理器支持三种标准类型的Source (DOMSource,SAXSource,StreamSource)以及三种标准类型的Result (DOMResult,SAXResult,StreamResult)以及处理器自己的实现。

●DOM接口可能最容易理解。解析器解析整个XML文档并构造出该文档的一个完整的内存表示,使用类对文档对象模型(DOM)级别2核心规范中的概念进行建模。
●DOM解析器被称作DocumentBuilder,因为它构建一个内存中的Document表示。javax.xml.parsers.DocumentBuilder是由javax.xml.parsers.DocumentBuilderFactory创建的。DocumentBuilder创建org.w3c.dom.Document的实例,Document是一个包含XML文档中的所有节点的树。结构中的每一个树节点实现org.w3c.dom.Node接口。树节点有许多不同类型的,表示XML文档中不同的数据类型。
●最重要的节点类型有:
●元素节点,具有许多属性
●文本节点,代表文档元素开始和结束标签之间的文字。
●Java 技术和 XML 无疑是最近五年来最重要的编程开发工具。因此,用于在 Java 语言中处理 XML 的 API 就发展起来了。两个最流行的 —— 文档对象模型 (DOM) 和 Simple API for XML (SAX) —— 已经产生巨大的影响,JDOM 和数据绑定 API 也随之产生了
●JAXP 使得使用 DOM 和 SAX 来处理一些困难任务变得更容易。它还允许以开发商中立的方式处理一些在使用 DOM 和 SAX API 时可能遇到的特定于开发商的任务。
●JAXP 为两种流行的 Java 和 XML API 提供了有用的插入层 (pluggability layer)。它使得代码具有开发商中立性,并允许进行解析器之间的更改,而无需重新编译解析代码。

●SAX解析器被称作SAXParser,SAXParser是由javax.xml.parsers.SAXParserFactory创建的。与DOM解析器不同,SAX解析器并不创建XML文档的内存表示,因此要更快使用更少的内存。而是,SAX解析器通过调用回调方法将XML文档结构告知客户端,也就是说,通过调用提供给解析器的org.xml.sax.helpers.DefaultHandler实例上的方法。
DefaultHandler类实现了ContentHandler,ErrorHandler,DTDHandler以及EntityResolver等接口。大多数客户端关心ContentHandler接口中定义的方法,当SAX解析器在XML文档中遇到元素时,相应的方法将被调用。

●接口中最重要的方法有:
●startDocument()和endDocument()方法,当XML文档的开始和结束时被调用。
●startElement()和endElement()方法,当一个文档元素开始和结束时被调用。
●characters()方法,调用处理XML文档元素的开始标签和结束标签之间的文本数据。
●客户端提供一个DefaultHandler的子类,实现这些方法,并在方法中对数据进行处理,可能会将数据存入数据库,或写出到流中。
●在解析过程中,解析器可能需要访问外部文档。因此可能会使用XML Catalog将经常使用的XML文档存储在本地的缓存中。
●SAX接口是在2000年5月发布的Java 1.3中引入的。

 类似资料: