<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=JAXP</id>
	<title>JAXP - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=JAXP"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=JAXP&amp;action=history"/>
	<updated>2026-07-07T18:32:57Z</updated>
	<subtitle>在这个wiki上该页的修订历史</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=JAXP&amp;diff=779553&amp;oldid=prev</id>
		<title>imported&gt;InternetArchiveBot：​补救7个来源，并将0个来源标记为失效。) #IABot (v2.0.8</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=JAXP&amp;diff=779553&amp;oldid=prev"/>
		<updated>2021-02-07T02:11:22Z</updated>

		<summary type="html">&lt;p&gt;补救7个来源，并将0个来源标记为失效。) #IABot (v2.0.8&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;JAXP&amp;#039;&amp;#039;&amp;#039;（&amp;#039;&amp;#039;&amp;#039;Java API for [[XML]] Processing&amp;#039;&amp;#039;&amp;#039;，意为XML处理的Java API）是[[Java]] [[XML]][[程序设计]]的[[应用程序接口]]之一，它提供解析和验证[[XML]]文档的能力。JAXP是在[[JCP|Java社区进程]]下开发的，包括JSR 5 （JAXP 1.0）和 JSR 63 （JAXP 1.1和1.2）两个规范。&lt;br /&gt;
&lt;br /&gt;
JAXP解析XML的三种基本接口为：&lt;br /&gt;
* [[文档对象模型]]解析接口或&amp;#039;&amp;#039;&amp;#039;DOM&amp;#039;&amp;#039;&amp;#039;接口&lt;br /&gt;
* [[SAX|XML简单API]]解析接口或&amp;#039;&amp;#039;&amp;#039;SAX&amp;#039;&amp;#039;&amp;#039;接口&lt;br /&gt;
* [[StAX|XML流API]]或&amp;#039;&amp;#039;&amp;#039;StAX&amp;#039;&amp;#039;&amp;#039;接口（是JDK 6的一部分，为JDK 5提供单独的包）&lt;br /&gt;
&lt;br /&gt;
除了解析接口，JAXP还提供了[[XSLT]]接口用来对XML文档进行数据和结构的转换。&lt;br /&gt;
&lt;br /&gt;
== DOM接口==&lt;br /&gt;
&lt;br /&gt;
DOM接口可能最容易理解。解析器解析整个XML文档并构造出该文档的一个完整的内存表示，使用类对文档对象模型（DOM）级别2核心规范&amp;lt;ref&amp;gt;{{Cite web |url=http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113 |title=Document Object Model(DOM) Level 2 Core Specification |accessdate=2011-04-01 |archive-date=2020-12-19 |archive-url=https://web.archive.org/web/20201219234940/http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ |dead-url=no }}&amp;lt;/ref&amp;gt;中的概念进行建模。&lt;br /&gt;
&lt;br /&gt;
DOM解析器被称作&amp;lt;code&amp;gt;DocumentBuilder&amp;lt;/code&amp;gt;，因为它构建一个内存中的&amp;lt;code&amp;gt;Document&amp;lt;/code&amp;gt;表示。{{Javadoc:SE|package=javax.xml.parsers|javax/xml/parsers|DocumentBuilder}}是由{{Javadoc:SE|package=javax.xml.parsers|javax/xml/parsers|DocumentBuilderFactory}}创建的。&amp;lt;code&amp;gt;DocumentBuilder&amp;lt;/code&amp;gt;创建{{Javadoc:SE|package=org.w3c.dom|org/w3c/dom|Document}}的实例，Document是一个包含XML文档中的所有节点的树。结构中的每一个树节点实现{{Javadoc:SE|package=org.w3c.dom|org/w3c/dom|Node}}接口。树节点有许多不同类型的，表示XML文档中不同的数据类型。最重要的节点类型有：&lt;br /&gt;
* 元素节点，具有许多属性&lt;br /&gt;
* 文本节点，代表文档元素开始和结束标签之间的文字。&lt;br /&gt;
&lt;br /&gt;
节点类型的完整列表，请参见{{Javadoc:SE|package=org.w3c.dom|org/w3c/dom}}包中的[[Javadoc]]文档。&lt;br /&gt;
&lt;br /&gt;
== SAX接口==&lt;br /&gt;
&lt;br /&gt;
SAX解析器被称作{{Javadoc:SE|javax/xml/parsers|SAXParser}}，SAXParser是由{{Javadoc:SE|package=javax.xml.parsers|javax/xml/parsers|SAXParserFactory}}创建的。与DOM解析器不同，SAX解析器并不创建XML文档的内存表示，因此要更快使用更少的内存。而是，SAX解析器通过调用回调方法将XML文档结构告知客户端，也就是说，通过调用提供给解析器的{{Javadoc:SE|package=org.xml.sax.helpers|org/xml/sax/helpers|DefaultHandler}}实例上的方法。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;DefaultHandler&amp;lt;/code&amp;gt;类实现了{{Javadoc:SE|org/xml/sax|ContentHandler}}，{{Javadoc:SE|org/xml/sax|ErrorHandler}}，{{Javadoc:SE|org/xml/sax|DTDHandler}}以及{{Javadoc:SE|org/xml/sax|EntityResolver}}等接口。大多数客户端甘心&amp;lt;code&amp;gt;ContentHandler&amp;lt;/code&amp;gt;接口中定义的方法，当SAX解析器在XML文档中遇到元素时，相应的方法将被调用。接口中最重要的方法有：&lt;br /&gt;
* &amp;lt;code&amp;gt;startDocument()&amp;lt;/code&amp;gt;和&amp;lt;code&amp;gt;endDocument()&amp;lt;/code&amp;gt;方法，当XML文档的开始和结束时被调用。&lt;br /&gt;
* &amp;lt;code&amp;gt;startElement()&amp;lt;/code&amp;gt;和&amp;lt;code&amp;gt;endElement()&amp;lt;/code&amp;gt;方法，当一个文档元素开始和结束时被调用。&lt;br /&gt;
* &amp;lt;code&amp;gt;characters()&amp;lt;/code&amp;gt;方法，调用处理XML文档元素的开始标签和结束标签之间的文本数据。&lt;br /&gt;
&lt;br /&gt;
客户端提供一个&amp;lt;code&amp;gt;DefaultHandler&amp;lt;/code&amp;gt;的子类，实现这些方法，并在方法中对数据进行处理，可能会将数据存入数据库，或写出到流中。&lt;br /&gt;
&lt;br /&gt;
在解析过程中，解析器可能需要访问外部文档。因此可能会使用[[XML Catalog]]将经常使用的XML文档存储在本地的缓存中。&lt;br /&gt;
&lt;br /&gt;
SAX接口是在2000年5月发布的Java 1.3中引入的。&amp;lt;ref&amp;gt;Compare the [http://java.sun.com/j2ee/sdk_1.2.1/techdocs/api/index-all.html#_S_ Java 1.2.1 API index] {{Wayback|url=http://java.sun.com/j2ee/sdk_1.2.1/techdocs/api/index-all.html#_S_ |date=20091207091038 }} with the [http://java.sun.com/j2ee/sdk_1.3/techdocs/api/index-all.html#_S_ 1.3 index] {{Wayback|url=http://java.sun.com/j2ee/sdk_1.3/techdocs/api/index-all.html#_S_ |date=20111007173813 }}. The Java Specification Request (JSR) 5, &amp;#039;&amp;#039;XML Parsing Specification&amp;#039;&amp;#039;, was finalised on [http://jcp.org/en/jsr/detail?id=5 21 March, 2000] {{Wayback|url=http://jcp.org/en/jsr/detail?id=5 |date=20200629141507 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== StAX接口==&lt;br /&gt;
StAX的设计介于DOM和SAX接口之间，在它的隐喻中，程序的入口点是一个代表文档中一个位置的光标。应用程序可以按需向前移动光标 – 从解析器中“拉”出信息。这与基于事件的API（如SAX）不同，SAX将数据“推”给应用程序，要求应用程序维护事件间的状态，如果应用需要知道在文档中的位置信息。&lt;br /&gt;
&lt;br /&gt;
== XSLT接口==&lt;br /&gt;
[[XSLT]]（可扩展样式表转换语言）允许将XML文档转换为数据其他形式。应用程序使用&amp;lt;code&amp;gt;javax.xml.transform&amp;lt;/code&amp;gt;包中的接口可以进行XSLT转换。接口最初被称为TrAX （Transformation API for XML），是由许多Java XSLT处理器的开发人员通过非正式协作开发的。&lt;br /&gt;
&lt;br /&gt;
接口的主要特性包括：&lt;br /&gt;
&lt;br /&gt;
*工厂类{{Javadoc:SE|package=javax.xml.transform|javax/xml/transform|TransformerFactory}}可以使应用动态地选择使用哪一个XSLT处理器。&lt;br /&gt;
* &amp;lt;code&amp;gt;TransformerFactory&amp;lt;/code&amp;gt;上的方法用来创建{{Javadoc:SE|package=javax.xml.transform|javax/xml/transform|Templates}}对象, 表示样式表的编译后的形式。这是一个线程安全的对象，可以重复使用，顺序或并发，在多个源文档上应用同一个样式表（或用用一个源文档，不同的参数）&lt;br /&gt;
* &amp;lt;code&amp;gt;Templates&amp;lt;/code&amp;gt;上的方法可以创建{{Javadoc:SE|package=javax.xml.transform|javax/xml/transform|Transformer}}，表示样式表的可执行形式。&amp;lt;code&amp;gt;Transformer&amp;lt;/code&amp;gt;不可以在线程间共享，虽然也是可重用的。&amp;lt;code&amp;gt;Transformer&amp;lt;/code&amp;gt;提供方法设置样式表参数和序列化选项（例如，输出是否缩进），以及一个实际运行转换的方法。&lt;br /&gt;
&lt;br /&gt;
JAXP定义了{{Javadoc:SE|package=javax.xml.transform|javax/xml/transform|Source}}和{{Javadoc:SE|package=javax.xml.transform|javax/xml/transform|Result}}两个抽象接口来表示转换的输入和输出。某种程度上，这是非常规使用Java接口，这是因为并不期待一个处理器会接受任何实现该接口的类，每一个处理器可以选择支持那些&amp;lt;code&amp;gt;Source&amp;lt;/code&amp;gt;和&amp;lt;code&amp;gt;Result&amp;lt;/code&amp;gt;的处理。实际上所有JAXP处理器支持三种标准类型的&amp;lt;code&amp;gt;Source&amp;lt;/code&amp;gt; （&amp;lt;code&amp;gt;DOMSource&amp;lt;/code&amp;gt;，&amp;lt;code&amp;gt;SAXSource&amp;lt;/code&amp;gt;，&amp;lt;code&amp;gt;StreamSource&amp;lt;/code&amp;gt;）以及三种标准类型的&amp;lt;code&amp;gt;Result&amp;lt;/code&amp;gt; （&amp;lt;code&amp;gt;DOMResult&amp;lt;/code&amp;gt;，&amp;lt;code&amp;gt;SAXResult&amp;lt;/code&amp;gt;，&amp;lt;code&amp;gt;StreamResult&amp;lt;/code&amp;gt;）以及处理器自己的实现。&lt;br /&gt;
&lt;br /&gt;
==版本==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! [[Java SE|J2SE]]版本!! 其中的JAX版本&lt;br /&gt;
|-&lt;br /&gt;
| 1.4 || 1.1&lt;br /&gt;
|-&lt;br /&gt;
| 1.5 || 1.3&lt;br /&gt;
|-&lt;br /&gt;
| 1.6 || 1.4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
JAXP 1.4.4于2010年9月3日发布。JAXP 1.3已经于2008年2月12日产品终结。&amp;lt;ref&amp;gt;[https://jaxp.dev.java.net/1.3/EndofLife.html]{{dead link|date=2017年11月 |bot=InternetArchiveBot |fix-attempted=yes }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
== 参见 ==&lt;br /&gt;
*[[SAX]]&lt;br /&gt;
*[[DOM]]&lt;br /&gt;
*[[StAX]]&lt;br /&gt;
*[[XSLT]]&lt;br /&gt;
*[[JAXB]]&lt;br /&gt;
*[[Dom4j]]&lt;br /&gt;
*[[JDOM]]&lt;br /&gt;
*[[Saxon]]&lt;br /&gt;
*[[XALAN]]&lt;br /&gt;
&lt;br /&gt;
== 外部链接 ==&lt;br /&gt;
* [http://jaxp.java.net/ JAXP 产品描述]{{Wayback|url=http://jaxp.java.net/ |date=20110812151256 }}&lt;br /&gt;
* [http://www.jcp.org/en/jsr/detail?id=63 JSR 63]{{Wayback|url=http://www.jcp.org/en/jsr/detail?id=63 |date=20110102040801 }} （JAXP 1.1和1.2）&lt;br /&gt;
* [http://www.jcp.org/en/jsr/detail?id=5 JSR 5]{{Wayback|url=http://www.jcp.org/en/jsr/detail?id=5 |date=20110129000312 }} （JAXP 1.0）&lt;br /&gt;
&lt;br /&gt;
== 参考文献==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Categories --&amp;gt;&lt;br /&gt;
[[Category:Java]]&lt;br /&gt;
[[Category:XML]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Interwikis --&amp;gt;&lt;/div&gt;</summary>
		<author><name>imported&gt;InternetArchiveBot</name></author>
	</entry>
</feed>