fbpx
维基百科

SAX

Simple API for XML(簡稱SAX)是個循序存取XML的解析器API。SAX提供一個機制從XML文件讀取資料。它是除了文档对象模型(DOM)的另外一種流行選擇。

使用SAX处理XML 编辑

实现SAX了的解析器拥有事件驱动式的API,并像流读取器那样工作。由使用者定义回调函数,解析时,若发生事件的话会被调用。SAX事件包括:

  • XML 文字 节点<!-- (Text nodes) -->
  • XML 元素 节点<!-- (Element nodes) -->
  • XML 处理指令<!-- (Processing Instructions) -->
  • XML 注释<!-- (Comments) -->

事件在遇到任一XML特性时触发,以及遇到他们结尾时再次触发。XML属性也作为传给元素事件资料的一部分。

SAX运行时是单向的;解析过的资料无法在不重新开始的情况下再次读取。

定义 编辑

不像 DOM,对于SAX并沒有「正式的」规格。Java对于SAX的实现被认为是一种规范,在其他语言的实现尝试遵循著该实现的程序,必要時根据语言差异而调整。

優點 编辑

SAX解析器在某些方面優於DOM風格解析器。SAX解析器的記憶體使用量一般遠低於DOM解析器使用量。DOM解析器在任何處理開始之前,必須把整棵樹放在記憶體,所以DOM解析器的記憶體使用量完全根據輸入資料的大小。相對來說,SAX解析器的記憶體內容,是只基於XML檔案的最大深度(XML樹的最大深度)和單一XML項目上XML屬性儲存的最大資料。這兩個總是比整顆解析樹本身還小。

因為SAX事件驅動的本質,處理文件通常會比DOM風格的解析器快。記憶體存取耗時,所以DOM較大的記憶體使用也是一個效能議題。

因為SAX的本質,從磁碟串流讀取是可行的。無法放入記憶體的XML文件只可能使用SAX解析器(或另外的串流XML解析器)來處理。

缺點 编辑

SAX事件驅動的模型對於XML解析很有用,但它確實有某些缺點。

某些種類的XML驗證需要存取整份文件。例如,一個DTD IDREF屬性需要文件內有項目使用指定字串當成DTD ID屬性。要在SAX解析器內驗證,必須追蹤每個之前遇過的ID和IDREF屬性,檢查是否有任何相符。更甚者,一個IDREF找不到對應的ID,使用者只會在整份文件都解析完後才發現,若這種連結對於建立有效輸出是重要的,那用在處理整份文件的時間只是浪費。

另外,某些XML處理能簡單的存取文件。舉例來說,XSLTXPath需要能夠隨時存取已解析的XML樹中的任何節點。 編輯者和瀏覽器同樣也需要能夠隨時顯示,修改和重新驗證XML樹。雖然一開始可能會使用SAX解析器來編輯建構XML樹,但SAX整體上對於以上處理沒有任何優化。

參見 编辑

其他XML處理技術 编辑

支援SAX的解析器及API 编辑

  • Xerces
  • MSXML
  • Crimson XML
  • JAXP - Java XML解析API
  • LibXML
  • AVHTML(页面存档备份,存于互联网档案馆) - 轻量级C++ HTML Parser

參考 编辑

外部連結 编辑

simple, 簡稱, 是個循序存取xml的解析器api, 提供一個機制從xml文件讀取資料, 它是除了文档对象模型, 的另外一種流行選擇, 目录, 使用处理xml, 定义, 優點, 缺點, 參見, 其他xml處理技術, 支援的解析器及api, 參考, 外部連結使用处理xml, 编辑实现了的解析器拥有事件驱动式的api, 并像流读取器那样工作, 由使用者定义回调函数, 解析时, 若发生事件的话会被调用, 事件包括, 文字, 节点, text, nodes, 元素, 节点, element, nodes, 处理指令,. Simple API for XML 簡稱SAX 是個循序存取XML的解析器API SAX提供一個機制從XML文件讀取資料 它是除了文档对象模型 DOM 的另外一種流行選擇 目录 1 使用SAX处理XML 2 定义 3 優點 4 缺點 5 參見 5 1 其他XML處理技術 5 2 支援SAX的解析器及API 6 參考 7 外部連結使用SAX处理XML 编辑实现SAX了的解析器拥有事件驱动式的API 并像流读取器那样工作 由使用者定义回调函数 解析时 若发生事件的话会被调用 SAX事件包括 XML 文字 节点 lt Text nodes gt XML 元素 节点 lt Element nodes gt XML 处理指令 lt Processing Instructions gt XML 注释 lt Comments gt 事件在遇到任一XML特性时触发 以及遇到他们结尾时再次触发 XML属性也作为传给元素事件资料的一部分 SAX运行时是单向的 解析过的资料无法在不重新开始的情况下再次读取 定义 编辑不像 DOM 对于SAX并沒有 正式的 规格 Java对于SAX的实现被认为是一种规范 在其他语言的实现尝试遵循著该实现的程序 必要時根据语言差异而调整 優點 编辑SAX解析器在某些方面優於DOM風格解析器 SAX解析器的記憶體使用量一般遠低於DOM解析器使用量 DOM解析器在任何處理開始之前 必須把整棵樹放在記憶體 所以DOM解析器的記憶體使用量完全根據輸入資料的大小 相對來說 SAX解析器的記憶體內容 是只基於XML檔案的最大深度 XML樹的最大深度 和單一XML項目上XML屬性儲存的最大資料 這兩個總是比整顆解析樹本身還小 因為SAX事件驅動的本質 處理文件通常會比DOM風格的解析器快 記憶體存取耗時 所以DOM較大的記憶體使用也是一個效能議題 因為SAX的本質 從磁碟串流讀取是可行的 無法放入記憶體的XML文件只可能使用SAX解析器 或另外的串流XML解析器 來處理 缺點 编辑SAX事件驅動的模型對於XML解析很有用 但它確實有某些缺點 某些種類的XML驗證需要存取整份文件 例如 一個DTD IDREF屬性需要文件內有項目使用指定字串當成DTD ID屬性 要在SAX解析器內驗證 必須追蹤每個之前遇過的ID和IDREF屬性 檢查是否有任何相符 更甚者 一個IDREF找不到對應的ID 使用者只會在整份文件都解析完後才發現 若這種連結對於建立有效輸出是重要的 那用在處理整份文件的時間只是浪費 另外 某些XML處理能簡單的存取文件 舉例來說 XSLT及XPath需要能夠隨時存取已解析的XML樹中的任何節點 編輯者和瀏覽器同樣也需要能夠隨時顯示 修改和重新驗證XML樹 雖然一開始可能會使用SAX解析器來編輯建構XML樹 但SAX整體上對於以上處理沒有任何優化 參見 编辑其他XML處理技術 编辑 文檔對象模型 XSL Transformations XSLT Streaming Transformations for XML STX 英语 Streaming Transformations for XML System Integrated Automation parser支援SAX的解析器及API 编辑 Xerces MSXML Crimson XML JAXP Java XML解析API LibXML AVHTML 页面存档备份 存于互联网档案馆 轻量级C HTML Parser參考 编辑David Brownell SAX2 O Reilly ISBN 0 596 00237 8 W Scott Means Michael A Bodie The Book of SAX No Starch Press ISBN 1 886411 77 8外部連結 编辑SAX 首頁 前10大 SAX2 密技 页面存档备份 存于互联网档案馆 語言介面 Perl Python Java 页面存档备份 存于互联网档案馆 取自 https zh wikipedia org w index php title SAX amp oldid 64192655, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。