C# XML解析
簡介C#讀取XML的兩種方式
XML作用
對於XML,想必各位都比較瞭解,我也就不用費筆墨來描述它是什麼了,我想在未來的Web開發中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/
您可能感興趣的文章:
相關文章
- c#(解析xml檔案基礎方法)C#XML
- Xml解析XML
- Java解析XMLJavaXML
- go 解析xmlGoXML
- iOS – XML解析iOSXML
- C# 操作xml(轉)C#XML
- C# 之 Linq to XmlC#XML
- python之XML解析PythonXML
- 175.XML解析XML
- Python XML解析之DOMPythonXML
- python XML 檔案解析PythonXML
- jdom解析xml檔案XML
- XML 檔案解析實踐 (DOM 解析)XML
- C#讀取Xml檔案C#XML
- C# 將HTML轉為XMLC#HTMLXML
- C# 將Excel轉為XMLC#ExcelXML
- XML解析-最快的方式SAXXML
- 使用DocumentBuilderFactory解析XML淺談UIXML
- XML DOM 解析器概述XML
- 使用 Java 解析XML檔案JavaXML
- 使用C#讀寫xml檔案C#XML
- C# - XML讀寫與序列化C#XML
- Python解析XML檔案生成HTMLPythonXMLHTML
- 搞懂 XML 解析,徒手造 WEB 框架XMLWeb框架
- 【spring原始碼系列】之【xml解析】Spring原始碼XML
- NPM酷庫051:xml2js,解析XML格式資料NPMXMLJS
- C# XML基礎入門(XML檔案內容增刪改查清)C#XML
- C# xml文件反序列化記事C#XML
- 【Go學習筆記16】解析xmlGo筆記XML
- XML DOM 解析器錯誤概述XML
- java使用jaxb解析XML(含根據xml自動生成實體類)JavaXML
- springMVC---配置檔案解析(web.xml)SpringMVCWebXML
- 基於 DOM 的 XML 檔案解析類XML
- 如何使用 ABAP 程式碼解析 XML 檔案XML
- 乾貨分享之Spring框架原始碼解析01-(xml配置解析)Spring框架原始碼XML
- Java 解析xml報文放入Map,並判斷所有xml標籤是否為空JavaXML
- .NETCore C# 中級篇2-6 Json與XMLNetCoreC#JSONXML
- java的XML解析(DOM4J技術)JavaXML