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否
xml 4c
sax/dom是
和xerces-c是一家,不過用了icu,國際化似乎更好
xerces-c
sax/dom是
xml booster
local
不清楚
這個庫不是特別了解,好像是類似yacc那樣,可以生成乙個特定的解析器,估計效率應該很高(看名字也像)。
學習筆記1
struct test test int x void fun class test1 test1 int x void fun int main void test1 a 行1 a.fun 行2 test1 b 行3 b.fun 行4 test c 行5 c.fun 行6 test d 行7 d....
學習筆記1
1 字串原地逆序 使用臨時變數 void reverse string s 5 求平均值 避免溢位 int f int x,int y 6 楊氏矩陣 bool young int a m n int x return false 7 十進位制轉十六進製制 string decimaltohexade...
學習筆記1
第二單元 linux的基本操作 1.改變使用者的密碼 passwd命令 注 a.只有root使用者可以修改其他使用者的密碼。普通使用者只能修改自己的密碼,且密碼必須設定地較為複雜,否則修改不成功 b.若執行passwd命令時後面不加使用者名稱,表示的是修改當前使用者的密碼。2.系統使用者的分類 注 ...