JAXPJava API for XML Processing,意为XML处理的Java API)是Java XML程序设计应用程序接口之一,它提供解析和验证XML文档的能力。JAXP是在Java社区进程下开发的,包括JSR 5 (JAXP 1.0)和 JSR 63 (JAXP 1.1和1.2)两个规范。

JAXP解析XML的三种基本接口为:

除了解析接口,JAXP还提供了XSLT接口用来对XML文档进行数据和结构的转换。

DOM接口

编辑

DOM接口可能最容易理解。解析器解析整个XML文档并构造出该文档的一个完整的内存表示,使用类对文档对象模型(DOM)级别2核心规范[1]中的概念进行建模。

DOM解析器被称作DocumentBuilder,因为它构建一个内存中的Document表示。javax.xml.parsers.DocumentBuilder是由javax.xml.parsers.DocumentBuilderFactory创建的。DocumentBuilder创建org.w3c.dom.Document的实例,Document是一个包含XML文档中的所有节点的树。结构中的每一个树节点实现org.w3c.dom.Node接口。树节点有许多不同类型的,表示XML文档中不同的数据类型。最重要的节点类型有:

  • 元素节点,具有许多属性
  • 文本节点,代表文档元素开始和结束标签之间的文字。

节点类型的完整列表,请参见org.w3c.dom包中的Javadoc文档。

SAX接口

编辑

SAX解析器被称作SAXParser,SAXParser是由javax.xml.parsers.SAXParserFactory创建的。与DOM解析器不同,SAX解析器并不创建XML文档的内存表示,因此要更快使用更少的内存。而是,SAX解析器通过调用回调方法将XML文档结构告知客户端,也就是说,通过调用提供给解析器的org.xml.sax.helpers.DefaultHandler实例上的方法。

DefaultHandler类实现了ContentHandlerErrorHandlerDTDHandler以及EntityResolver等接口。大多数客户端甘心ContentHandler接口中定义的方法,当SAX解析器在XML文档中遇到元素时,相应的方法将被调用。接口中最重要的方法有:

  • startDocument()endDocument()方法,当XML文档的开始和结束时被调用。
  • startElement()endElement()方法,当一个文档元素开始和结束时被调用。
  • characters()方法,调用处理XML文档元素的开始标签和结束标签之间的文本数据。

客户端提供一个DefaultHandler的子类,实现这些方法,并在方法中对数据进行处理,可能会将数据存入数据库,或写出到流中。

在解析过程中,解析器可能需要访问外部文档。因此可能会使用XML Catalog将经常使用的XML文档存储在本地的缓存中。

SAX接口是在2000年5月发布的Java 1.3中引入的。[2]

StAX接口

编辑

StAX的设计介于DOM和SAX接口之间,在它的隐喻中,程序的入口点是一个代表文档中一个位置的光标。应用程序可以按需向前移动光标 – 从解析器中“拉”出信息。这与基于事件的API(如SAX)不同,SAX将数据“推”给应用程序,要求应用程序维护事件间的状态,如果应用需要知道在文档中的位置信息。

XSLT接口

编辑

XSLT(可扩展样式表转换语言)允许将XML文档转换为数据其他形式。应用程序使用javax.xml.transform包中的接口可以进行XSLT转换。接口最初被称为TrAX (Transformation API for XML),是由许多Java XSLT处理器的开发人员通过非正式协作开发的。

接口的主要特性包括:

  • 工厂类javax.xml.transform.TransformerFactory可以使应用动态地选择使用哪一个XSLT处理器。
  • TransformerFactory上的方法用来创建javax.xml.transform.Templates对象, 表示样式表的编译后的形式。这是一个线程安全的对象,可以重复使用,顺序或并发,在多个源文档上应用同一个样式表(或用用一个源文档,不同的参数)
  • Templates上的方法可以创建javax.xml.transform.Transformer,表示样式表的可执行形式。Transformer不可以在线程间共享,虽然也是可重用的。Transformer提供方法设置样式表参数和序列化选项(例如,输出是否缩进),以及一个实际运行转换的方法。

JAXP定义了javax.xml.transform.Sourcejavax.xml.transform.Result两个抽象接口来表示转换的输入和输出。某种程度上,这是非常规使用Java接口,这是因为并不期待一个处理器会接受任何实现该接口的类,每一个处理器可以选择支持那些SourceResult的处理。实际上所有JAXP处理器支持三种标准类型的SourceDOMSourceSAXSourceStreamSource)以及三种标准类型的ResultDOMResultSAXResultStreamResult)以及处理器自己的实现。

版本

编辑
J2SE版本 其中的JAX版本
1.4 1.1
1.5 1.3
1.6 1.4

JAXP 1.4.4于2010年9月3日发布。JAXP 1.3已经于2008年2月12日产品终结。[3]

参见

编辑

外部链接

编辑

参考文献

编辑
  1. ^ Document Object Model(DOM) Level 2 Core Specification. [2011-04-01]. (原始内容存档于2020-12-19). 
  2. ^ Compare the Java 1.2.1 API index页面存档备份,存于互联网档案馆) with the 1.3 index页面存档备份,存于互联网档案馆). The Java Specification Request (JSR) 5, XML Parsing Specification, was finalised on 21 March, 2000页面存档备份,存于互联网档案馆).
  3. ^ [1][永久失效連結]


📚 Artikel Terkait di Wikipedia

Java平臺

Java平台即由Java程式語言所撰寫的軟體賴以執行的平台,是Java軟體和電腦系統的中介,最初被設計用在 Applet 等桌面端程式,不過後來逐漸轉移到伺服端的運用。 Java SE Java EE Java ME Java EMBEDDED Java Card Java TV Java 執行環境,即 Java

Jakarta EE

Web Services JAXM - Java API for XML Messaging JAXP - Java XML解析API(Java API for XML Processing) JAXR - Java API for XML Registries JCA - J2EE连接器架构(J2EE

Java Servlet

接执行正式运行方法,直到服务器关闭或被清理时执行一次销毁方法后实体销毁。 Java服务器页面(JSP)是HttpServlet的扩展。由于HttpServlet大多是用来响应HTTP请求,并返回Web页面(例如HTML、XML),所以不可避免地,在编写servlet时会涉及大量的HTML内容,这给s

XML-RPC

Apache XML-RPC (页面存档备份,存于互联网档案馆): Open source library for Java XML-RPC Delight (页面存档备份,存于互联网档案馆): Convenient serialisation/deserialisation for Apache XML-RPC

SAX

Transformations for XML (STX)(英语:Streaming Transformations for XML) System Integrated Automation parser Xerces MSXML Crimson XML JAXP - Java XML解析API LibXML AVHTML(页面存档备份,存于互联网档案馆)

JAXB

JAXB(Java Architecture for XML Binding简称JAXB)允许Java开发人员将Java类映射为XML表示方式。JAXB提供两种主要特性:将一个Java对象序列化为XML,以及反向操作,将XML解析成Java对象。换句话说,JAXB允许以XML

JAXM

JAXM(Java API for XML Messaging简称JAXM)是为Java平台上的应用程序定义的API,用以通过XML(以及SOAP)发送和接收消息,支持同步消息和异步消息。JAXR API是在JCP下开发的,代号JSR 67。 JAXM的基本概念包括消息,连接,消息提供者以及JAXM客户端和JAXM服务

Gradle

Maven概念的项目自动化建构工具。Gradle 构建脚本使用的是 Groovy 或 Kotlin 的特定领域语言来编写的,而不是传统的XML。 当前官方支持的语言为Java、Groovy、Scala、C++、Swift、JavaScript等以及Spring框架。 自動處理套件相依關係 - 取自 Maven Repos 的概念 自動處理佈署問題