簡介C#讀取XML的兩種方式

來源:互聯網
上載者:User

XML作用

對於XML,想必各位都比較瞭解,我也就不用費筆墨來描述它是什麼了,我想在未來的Web開發中XML一定會大放異彩,XML是可延伸標記語言 (XML),使用它企業可以制定一套自己的資料格式。用於Internet的資料轉送,我想,這是XML對於我們這些程式員最誘人的地方!

我們今天的主題不是論述XML的好處,而是討論在C#中如何使用XML。下面我們來瞭解一下使用程式訪問XML的一些基礎理論知識。

訪問的兩種模型:

在程式中訪問進而操作XML檔案一般有兩種模型,分別是使用DOM(文件物件模型)和流模型,使用DOM的好處在於它允許編輯和更新XML文檔,可以隨機訪問文檔中的資料,可以使用XPath查詢,但是,DOM的缺點在於它需要一次性的載入整個文檔到記憶體中,對於大型的文檔,這會造成資源問題。流模型很好的解決了這個問題,因為它對XML檔案的訪問採用的是流的概念,也就是說,任何時候在記憶體中只有當前節點,但它也有它的不足,它是唯讀,僅向前的,不能在文檔中執行向後導航操作。雖然是各有千秋,但我們也可以在程式中兩者並用實現優劣互補嘛,呵呵

一、DOM文件物件模型操作

複製代碼 代碼如下:using System.Xml;

XmlDocument xml=new XmlDocument();//初始化一個xml執行個體
xml.Load(path);//匯入指定xml檔案
xml.Load(HttpContext.Current.Server.MapPath("~/file/bookstore.xml"));XmlNode root=xml.SelectSingleNode("/root");//指定一個節點
XmlNodeList childlist=root.ChildNodes;//擷取節點下所有直接子節點
XmlNodeList nodelist=xml.SelectNodes("/Root/News");//擷取同名同級節點集合string id=node.Attributes["id"].Value;//擷取指定節點的指定屬性值
string content=node.InnerText;//擷取指定節點中的文本
root.HasChildNodes;//判斷該節點下是否有子節點

1.XmlDocument類的屬性

XmlDocument類的屬性及說明如下表所示。

屬性

說明

Attributes

當前節點的屬性集合

BaseURI

當前節點的基URI

ChildNodes

節點的所有子節點

DocumentElement

文檔的根

DocumentType

DOCTYPE 聲明的節點

FirstChild

節點的第一個子節點

HasChildNodes

是否有任何子節點

Implementation

擷取當前文檔的 XmlImplementation對象

InnerText

節點包含的所有常值內容

InnerXml

節點所包含的所有XML內容

IsReadOnly

當前節點是否是唯讀

Item

擷取指定的子項目

LastChild

最後一個子節點

LocalName

擷取節點的本地名稱

Name

擷取節點的限定名

NamespaceURI

擷取該節點的命名空間 URI

NameTable

擷取與此實現關聯的 XmlNameTable

NextSibling

擷取緊接在該節點之後的節點

NodeType

擷取當前節點的類型

OuterXml

擷取表示此節點及其所有子節點的標記

OwnerDocument

擷取當前節點所屬的 XmlDocument

ParentNode

擷取該節點(對於可以具有父級的節點)的父級

Prefix

擷取或設定該節點的命名空間首碼

PreserveWhitespace

擷取或設定一個值,該值指示是否在元素內容中保留空白

PreviousSibling

擷取緊接在該節點之前的節點

SchemaInfo

返回節點的後結構描述驗證資訊集 (PSVI)

Schemas

擷取或設定與此 XmlDocument 關聯的 XmlSchemaSet 對象

Value

擷取或設定節點的值

XmlResolver

設定 XmlResolver 以用於解析外部資源

2.XmlDocument類的方法

XmlDocument類的方法及說明如下表所示。

方法

說明

AppendChild

將指定的節點添加到該節點的子節點列表的末尾

CreateAttribute

建立具有指定名稱的 XmlAttribute

CreateCDataSection

建立包含指定資料的 XmlCDataSection

CreateComment

建立包含指定資料的 XmlComment

CreateDocumentFragment

建立 XmlDocumentFragment

CreateDocumentType

返回新的 XmlDocumentType 對象

CreateElement

建立 XmlElement

CreateEntityReference

建立具有指定名稱的 XmlEntityReference

CreateNavigator

建立一個用於導航此文檔的新 XPathNavigator 對象

CreateNode

建立 XmlNode

CreateProcessingInstruction

建立一個具有指定名稱和資料的 XmlProcessingInstruction

CreateSignificantWhitespace

建立一個 XmlSignificantWhitespace 節點

CreateTextNode

建立具有指定文本的 XmlText

CreateWhitespace

建立一個 XmlWhitespace 節點

CreateXmlDeclaration

建立一個具有指定值的 XmlDeclaration 節點

GetElementById

擷取具有指定 ID 的 XmlElement

GetElementsByTagName

返回一個 XmlNodeList ,它包含與指定名稱匹配的所有元素的列表

GetNamespaceOfPrefix

尋找當前節點範圍內離給定的首碼最近的 xmlns 聲明,並返回聲明中的命名空間 URI

GetPrefixOfNamespace

尋找當前節點範圍內離給定的命名空間 URI 最近的 xmlns 聲明,並返回聲明中定義的首碼

GetType

擷取當前執行個體的 Type

ImportNode

將節點從另一個文檔匯入到當前文檔

InsertAfter

將指定的節點緊接著插入指定的引用節點之後

InsertBefore

將指定的節點緊接著插入指定的引用節點之前

Load

載入指定的 XML 資料

LoadXml

從指定的字串載入 XML 文檔

Normalize

將XmlText 節點都轉換成“正常”形式

PrependChild

將指定的節點添加到該節點的子節點列表的開頭

ReadNode

根據 XmlReader 中的資訊建立一個 XmlNode 對象。讀取器必須定位在節點或屬性上

RemoveAll

移除當前節點的所有子節點和/或屬性

RemoveChild

移除指定的子節點

ReplaceChild

用新節點替換舊節點

Save

將 XML 文檔儲存到指定的位置

SelectNodes

選擇匹配XPath 運算式的節點列表

SelectSingleNode

選擇匹配 XPath 運算式的第一個 XmlNode

Supports

測試 DOM 實現是否實現特定的功能

Validate

驗證 XmlDocument 是不是 Schemas 屬性中包含的 XML 結構定義語言 (XSD) 架構。

WriteContentTo

將 XmlDocument 節點的所有子級儲存到指定的 XmlWriter 中

WriteTo

將 XmlDocument 節點儲存到指定的 XmlWriter

下面對常用的方法進行介紹。

(1)Load方法

該方法可以從一個字串指定的XML檔案或是一個流對象、一個TextReader對象、一個XmlReader對象匯入XML資料。

(2)LoadXml方法

該方法完成從一個特定的XML檔案匯入XML資料的功能。預設情況下,LoadXml 方法既不保留空白,也不保留有意義的空白。此方法不執行 DTD 或結構描述驗證。

(3)Save方法

該方法將XML資料儲存到一個XML檔案或是一個流對象、一個TextReader對象、一個XmlReader對象匯入XML資料。

3.XmlDocument類的事件

XmlDocument類的事件及說明如下表所示。

表 XmlDocument類的事件及說明

事件

說明

NodeChanged

當屬於該文檔的節點的 Value已被更改時發生

NodeChanging

當屬於該文檔的節點的 Value 將被更改時發生

NodeInserted

當屬於該文檔的節點已被插入另一個節點時發生

NodeInserting

當屬於該文檔的節點將被插入另一個節點時發生

NodeRemoved

當屬於該文檔的節點已被從其父級移除時發生

NodeRemoving

當屬於該文檔的節點將被從文檔中移除時發生

http://kb.cnblogs.com/page/42226/

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.