zz Expat學習筆記

2021-05-22 17:11:08 字數 1157 閱讀 7346

expat是乙個由c語言編寫的xml解析庫。james clark建立了這個庫,現在是制定xml標準的w3組織的技術leader。現在的版本是2.0。2.0開始就由clark cooper領導的開發組在

sourceforge.net

負責開發。

expat是乙個基於sax模型的、非驗證(預設,v1.2開始提供驗證介面,需要使用者手動處理)的輕量級xml直譯器。

目前xml的解析主要有兩大模型:sax和dom。

其中sax(****** api for xml)是基於事件的解析方法。基本工作原理是分析xml文件,通過觸發事件來通知使用者解析的結果。這種方式占用記憶體少,速度快,但使用者程式相應得會比較複雜。

而dom(document object model),則是一次性將整個xml文件進行分析,在記憶體中以樹結構儲存解析結果。同時,向使用者提供一系列的介面來訪問和編輯該樹結構。這種方式占用記憶體大,速度往往慢於sax,但可以給使用者提供乙個物件導向的訪問介面,對使用者更為友好。

對於乙個特定的xml文件而言,其正確性分為兩個層次。首先是其格式應該符合xml的基本格式要求,比如第一行要有宣告,標籤的巢狀層次必須前後一致等等,符合這些要求的檔案,就是乙個合格的xml檔案,稱作well-formatted。但除此之外,乙個xml文件因其內容的不同還必須在語義上符合相應的標準,這些標準由相應的dtd檔案或者schema檔案來定義,符合了這些定義要求的xml檔案,稱作valid。

因此,解析器也分為驗證和非驗證兩種。是驗證的會跟據xml檔案中的宣告,用相應的dtd檔案對xml檔案進行校驗,檢查它是否滿足dtd檔案的要求。非驗證性的則忽略dtd檔案,只要基本格式正確,就可以進行解析。

參考其他資料,xml解析庫簡單總結如下: 名稱

訪問介面

是否支援驗證 備註

expat

sax手動

libxml2

sax/dom是

tinyxml

dom否

xml4c

sax/dom是

和xerces-c是一家,不過用了icu,國際化似乎更好

xerces-c

sax/dom是

xml booster

local

不清楚

這個庫不是特別了解,好像是類似yacc那樣,可以生成乙個特定的解析器,估計效率應該很高(看名字也像)。

學習筆記 雜湊學習筆記

hash基本原理 hash就是乙個像函式一樣的東西,你放進去乙個值,它給你輸出來乙個值。輸出的值就是hash值。一般hash值會比原來的值更好儲存 更小 或比較。那字串hash就非常好理解了。就是把字串轉換成乙個整數的函式。而且要盡量做到使字串對應唯一的hash值。它的主要思路是選取恰當的進製,可以...

學習筆記 CentOS 學習筆記01

簡單的做個課堂筆記 虛擬機器用的是vmware,系統是centos cd etc sysconfig network scripts pwdls 顯示列表 cat ifcfg eth0 檢視檔案內容 vi ifcfg eth0 進入vi編輯器 onboot no 原始設定 x逐字刪除 d刪除整行 a...

筆記 spring cloud 學習筆記

1 spring cloud 是什麼 spring cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具 例如配置管理,服務發現,斷路器,智慧型路由,微 控制匯流排 分布式系統的協調導致了樣板模式,使用spring cloud開發人員可以快速地支援實現這些模式的服務和應用程式。他們將在任...