標籤:
針對XML文檔的應用編程介面中,一般有兩種模型:W3C制定的DOM(Document Object Method,文件物件模型)和流模型。
流模型的兩種變體:"推"模型(XML的簡單API)和"拉"模型(.NET中的流模型)。
XML的解析方法:
|
“推”模型 |
“拉”模型 |
DOM |
|
“推”模型也就是常說的SAX,SAX是一種靠事件驅動的模型。它每發現一個節點就用“推”模型引發一個事件。 |
.NET在中對XML解析是基於“拉”模型的實現方案。“拉”模型在遍曆文檔時會把感興趣的部分從讀取器中拉出來,不需要引發事件。在.NET中“拉”模型通過XML閱讀器(XMLTextReader類)來實現 |
.NET中使用XML DOM分析器(XMLDocument)實現DOM模型。 |
缺點 |
必須編寫這些事件的處理常式,很麻煩且複雜。不能對文檔進行隨機訪問和修改。 |
XMLTextReader類是唯讀,向前的,不能再文檔中執行向後導航操作。 |
需要一次性載入整個文檔到記憶體中,對於大型文檔會造成資源問題。 |
優點 |
不需要把XML文檔完全載入到記憶體中,是一個分析大型XML文檔的高效API。 |
允許我們一編程的方式訪問文檔,大大提高了靈活性,可以選擇性處理節點,記憶體中只儲存當前節點。XMLTextReader類能檢驗文檔是否格式良好,如果不是良好格式的XML該類在讀取過程中會拋出XMLException異常。 |
允許編輯和更新XML文檔,可以隨機訪問文檔中的資料,可以使用XPath查詢。 |
.NET Framework支援XML DOM分析器(XMLDocument類)和XML閱讀器(XMLTextReader類),不支援SAX分析器。但可以通過XML閱讀器很容易的實現SAX的所有功能及更有效運用。
在System.XML 名稱空間中組織進了以下幾個用於XML的類:
- XMLTextReader---提供以快速、單向、無緩衝的方式存取XML資料。(單向意味著你只能從 前往後讀取XML檔案,而不能逆向讀取)
- XMLValidatingReader---與XMLTextReader類一起使用,提供驗證DTD、XDR和XSD架構的能力。
- XMLDocument---遵循W3C文件物件模型規範的一級和二級標準,實現XML資料隨機的、有緩衝的存取。一級水平包含了DOM的最基本的部分,而二級水平增加多種改進,包括增加了對名稱空間和級連狀圖表(CSS)的支援。
- XMLTextWriter---產生遵循 W3C XML 1.0 規範的XML檔案。
C#讀寫XML的兩種一般方式