<?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=SAX</id>
	<title>SAX - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=SAX"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=SAX&amp;action=history"/>
	<updated>2026-07-15T08:52:59Z</updated>
	<subtitle>在这个wiki上该页的修订历史</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=SAX&amp;diff=243116&amp;oldid=prev</id>
		<title>imported&gt;InternetArchiveBot：​补救6个来源，并将0个来源标记为失效。) #IABot (v2.0.8</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=SAX&amp;diff=243116&amp;oldid=prev"/>
		<updated>2021-02-08T20:20:06Z</updated>

		<summary type="html">&lt;p&gt;补救6个来源，并将0个来源标记为失效。) #IABot (v2.0.8&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{NoteTA|G1=IT}}&lt;br /&gt;
Simple API for XML（簡稱&amp;#039;&amp;#039;&amp;#039;SAX&amp;#039;&amp;#039;&amp;#039;）是個循序存取XML的解析器API。SAX提供一個機制從XML文件讀取資料。它是除了[[文档对象模型]]（DOM）的另外一種流行選擇。&lt;br /&gt;
&lt;br /&gt;
== 使用SAX处理XML ==&lt;br /&gt;
实现SAX了的解析器拥有[[事件驱动]]式的API，并像流读取器那样工作。由使用者定义[[回调函数]]，解析时，若发生事件的话会被调用。SAX事件包括：&lt;br /&gt;
&lt;br /&gt;
* XML 文字 节点&amp;amp;lt;!-- (Text nodes) --&amp;gt;&lt;br /&gt;
* XML 元素 节点&amp;amp;lt;!-- (Element nodes) --&amp;gt;&lt;br /&gt;
* XML 处理指令&amp;amp;lt;!-- (Processing Instructions) --&amp;gt;&lt;br /&gt;
* XML 注释&amp;amp;lt;!-- (Comments) --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
事件在遇到任一XML特性时触发，以及遇到他们结尾时再次触发。XML属性也作为传给元素事件资料的一部分。&lt;br /&gt;
&lt;br /&gt;
SAX运行时是单向的；解析过的资料无法在不重新开始的情况下再次读取。&lt;br /&gt;
&lt;br /&gt;
== 定义 ==&lt;br /&gt;
&lt;br /&gt;
不像 DOM，对于SAX并沒有「正式的」规格。[[Java]]对于SAX的实现被认为是一种规范，在其他语言的实现尝试遵循著该实现的程序，必要時根据语言差异而调整。&lt;br /&gt;
&lt;br /&gt;
== 優點 ==&lt;br /&gt;
&lt;br /&gt;
SAX解析器在某些方面優於DOM風格解析器。SAX解析器的[[主記憶體|記憶體]]使用量一般遠低於DOM解析器使用量。DOM解析器在任何處理開始之前，必須把整棵樹放在記憶體，所以DOM解析器的記憶體使用量完全根據輸入資料的大小。相對來說，SAX解析器的記憶體內容，是只基於XML檔案的最大深度（XML樹的最大深度）和單一XML項目上XML屬性儲存的最大資料。這兩個總是比整顆解析樹本身還小。&lt;br /&gt;
&lt;br /&gt;
因為SAX事件驅動的本質，處理文件通常會比DOM風格的解析器快。記憶體存取耗時，所以DOM較大的記憶體使用也是一個效能議題。&lt;br /&gt;
&lt;br /&gt;
因為SAX的本質，從磁碟串流讀取是可行的。無法放入記憶體的XML文件只可能使用SAX解析器（或另外的串流XML解析器）來處理。&lt;br /&gt;
&lt;br /&gt;
== 缺點 ==&lt;br /&gt;
&lt;br /&gt;
SAX事件驅動的模型對於XML解析很有用，但它確實有某些缺點。&lt;br /&gt;
&lt;br /&gt;
某些種類的[[XML驗證]]需要存取整份文件。例如，一個[[文件類型描述|DTD]] IDREF屬性需要文件內有項目使用指定字串當成DTD ID屬性。要在SAX解析器內驗證，必須追蹤每個之前遇過的ID和IDREF屬性，檢查是否有任何相符。更甚者，一個IDREF找不到對應的ID，使用者只會在整份文件都解析完後才發現，若這種連結對於建立有效輸出是重要的，那用在處理整份文件的時間只是浪費。&lt;br /&gt;
&lt;br /&gt;
另外，某些XML處理能簡單的存取文件。舉例來說，[[XSLT]]及[[XPath]]需要能夠隨時存取已解析的XML樹中的任何節點。&lt;br /&gt;
編輯者和瀏覽器同樣也需要能夠隨時顯示，修改和重新驗證XML樹。雖然一開始可能會使用SAX解析器來編輯建構XML樹，但SAX整體上對於以上處理沒有任何優化。&lt;br /&gt;
&lt;br /&gt;
== 參見 ==&lt;br /&gt;
=== 其他XML處理技術 ===&lt;br /&gt;
* [[文檔對象模型]]&lt;br /&gt;
* [[XSLT|XSL Transformations (XSLT)]]&lt;br /&gt;
* {{link-en|Streaming Transformations for XML (STX)|Streaming Transformations for XML}}&lt;br /&gt;
* [[System Integrated Automation parser]]&amp;lt;!-- http://www.geocities.com/siaparser/ --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 支援SAX的解析器及API ===&lt;br /&gt;
* [[Apache Xerces|Xerces]]&lt;br /&gt;
* [[MSXML]]&lt;br /&gt;
* [[Crimson XML]]&amp;lt;!-- http://xml.apache.org/crimson/ --&amp;gt;&lt;br /&gt;
* [[JAXP]] - Java XML解析API&lt;br /&gt;
* [[LibXML]]&lt;br /&gt;
* [https://github.com/avplayer/avhtml AVHTML]{{Wayback|url=https://github.com/avplayer/avhtml |date=20180611034030 }} - 轻量级C++ HTML Parser&lt;br /&gt;
&lt;br /&gt;
== 參考 ==&lt;br /&gt;
* [[David Brownell]]：&amp;#039;&amp;#039;SAX2&amp;#039;&amp;#039;, O&amp;#039;Reilly, ISBN 0-596-00237-8&lt;br /&gt;
* [[W. Scott Means]]，[[Michael A. Bodie]]：&amp;#039;&amp;#039;The Book of SAX&amp;#039;&amp;#039;, No Starch Press, ISBN 1-886411-77-8&lt;br /&gt;
&lt;br /&gt;
== 外部連結 ==&lt;br /&gt;
* [https://web.archive.org/web/20171012080000/http://www.saxproject.org/ SAX 首頁]&lt;br /&gt;
* [http://xml.com/pub/a/2001/12/05/sax2.html 前10大 SAX2 密技]{{Wayback|url=http://xml.com/pub/a/2001/12/05/sax2.html |date=20070514033235 }}&lt;br /&gt;
&lt;br /&gt;
* 語言介面：&lt;br /&gt;
** [https://web.archive.org/web/20070208091617/http://search.cpan.org/~grantm/XML-SAX-0.15/SAX.pm Perl]&lt;br /&gt;
** [https://web.archive.org/web/20070517233418/http://www.python.org/doc/current/lib/module-xml.sax.html Python]&lt;br /&gt;
** [http://www.saxproject.org/?selected=quickstart Java]{{Wayback|url=http://www.saxproject.org/?selected=quickstart |date=20070206120710 }}&lt;br /&gt;
&lt;br /&gt;
[[Category:XML]]&lt;br /&gt;
[[Category:应用程序接口]]&lt;/div&gt;</summary>
		<author><name>imported&gt;InternetArchiveBot</name></author>
	</entry>
</feed>