1、XML DOM概述
XML 文檔大小寫敏感、屬性用引號括起來,每個標記都要閉合。api
DOM是XML文檔的內存中樹狀的表示形式。架構
繼承關係圖:spa
XmlNode;//XML節點 ......XmlDocument;//XML文檔 ............XmlDataDocument;//與Dataset相關的文檔 ......XmlDocumentFragment;//文檔片斷 ......XmlLinkedNode;//鏈接節點(抽象類) ............XmlDeclaration;//XML聲明:<?xml version='1.0' ..?> ............XmlDocumentType;//文檔類型 ............XmlElement;//元素 ............XmlEntityReference;//實體引用節點 ............XmlProcessingInstruction;//處理指令 ............XmlCharacterData;//字符數據(抽象類) ..................XmlCDataSection;//CDATA節 ..................XmlComment;//註釋 ..................XmlSignificantWhitespace;//有效空白 ..................XmlWhitespace;//空白 ..................XmlText;//元素或屬性的文本內容 ......XmlAttribute;//屬性 ......XmlEntity;//實體聲明<!Entity..> ......XmlNotation;//表示法聲明<!Notation...>
2、XMl節點:XmlNode
一、屬性:
- ChildNodes : 獲取節點的全部子節點。
- FirstChild : 獲取節點的第一個子級。
- HasChildNodes :獲取一個值,該值指示此節點是否有任何子節點。
- LastChild : 獲取節點的最後一個子級。
- ParentNode : 獲取該節點的父級(針對能夠擁有父級的節點)。
- NextSibling : 獲取緊接在該節點以後的節點。
- PreviousSibling : 獲取緊接在該節點以前的節點。
- InnerText : 獲取或設置節點及其全部子節點的串連值。
- InnerXml : 獲取或設置僅表示該節點的子節點的標記。
- OuterXml : 獲取包含此節點及其全部子節點的標記。
- NodeType : 當在派生類中被重寫時,獲取當前節點的類型。
- Value : 獲取或設置節點的值。
- Attributes : 獲取一個 XmlAttributeCollection,它包含該節點的特性。
- OwnerDocument : 獲取此節點所屬的 XmlDocument。
二、方法:
- AppendChild(XmlNode) : 將指定的節點添加到該節點的子節點列表的末尾。
- PrependChild(XmlNode) : 將指定的節點添加到該節點的子節點列表的開頭。
- InsertAfter(XmlNode, XmlNode) : 將指定的節點緊接着插入指定的引用節點以後。
- InsertBefore(XmlNode, XmlNode) : 將指定的節點緊接着插入指定的引用節點以前。
- RemoveAll() : 移除當前節點的全部子節點和/或屬性。
- RemoveChild(XmlNode) : 移除指定的子節點。
- ReplaceChild(XmlNode, XmlNode) : 用 oldChild 節點替換子節點 newChild。
- SelectNodes(String) : 選擇匹配 XPath 表達式的節點列表。
- SelectSingleNode(String) : 選擇匹配 XPath 表達式的第一個 XmlNode。
- WriteContentTo(XmlWriter) : 當在派生類中被重寫時,該節點的全部子節點會保存到指定的 XmlWriter 中。
- WriteTo(XmlWriter) : 當在派生類中被重寫時,將當前節點保存到指定的 XmlWriter 中。
- Clone() : 建立此節點的副本。
- CloneNode(Boolean) : 當在派生類中被重寫時,建立該節點的副本
- CreateNavigator() : 建立 XPathNavigator 以瀏覽此對象。
3、XML文檔:XMLDocument
一、屬性:
- DocumentElement : 獲取文檔的根 XmlElement。
- DocumentType : 獲取包含 DOCTYPE 聲明的節點。
- PreserveWhitespace : 獲取或設置一個值,該值指示是否在元素內容中保留空白區域。
- Schemas : 獲取或設置與此 XmlDocument 關聯的 XmlSchemaSet 對象。
- XmlResolver : 設置 XmlResolver 以用於解析外部資源。
二、方法:
- GetElementById(String) : 獲取具備指定 ID 的 XmlElement。
- GetElementsByTagName(String) : 返回一個 XmlNodeList,它包含與指定 Name 匹配的全部子代元素的列表。
- ImportNode(XmlNode, Boolean) : 將節點從另外一個文檔導入到當前文檔。Load(Stream) 從指定的流加載 XML 文檔。
- Load(String) : 從指定的 URL 加載 XML 文檔。。
- LoadXml(String) : 從指定的字符串加載 XML 文檔。
- Save(String) : 將 XML 文檔保存到指定的文件。 若是存在指定文件,則此方法會覆蓋它。
- Validate(ValidationEventHandler) : 驗證 XmlDocument 是否是 Schemas 屬性中包含的 XML 架構定義語言(XSD) 架構。
- CloneNode(Boolean) : 建立此節點的副本。
- ReadNode(XmlReader) : 根據 XmlReader 中的信息建立一個 XmlNode 對象。 讀取器必須定位在節點或屬性上。
- WriteContentTo(XmlWriter) : 將 XmlDocument 節點的全部子級保存到指定的 XmlWriter 中。
- WriteTo(XmlWriter) : 將 XmlDocument 節點保存到指定的 XmlWriter。
- Create****(String) : 建立具備指定 Name 的 Xml***。
- CreateNavigator() : 建立一個用於導航此文檔的新 XPathNavigator 對象。
三、事件:
- NodeChanging、NodeChanged 當屬於該文檔的節點的 Value 將、已被更改時發生。
- NodeInserting、NodeInserted 將屬於該文檔的節點將、已插入另外一個節點時發生。
- NodeRemoving、NodeRemoved 當屬於該文檔的節點將、已從其父級中移除時發生。
4、XML元素:XmlElement
一、屬性:
- Attributes : 獲取包含該節點特性列表的 XmlAttributeCollection。
- HasAttributes : 獲取一個 boolean 值,該值指示當前節點是否有任何屬性。
- IsEmpty : 獲取或設置元素的標記格式。
- SchemaInfo : 獲取做爲架構驗證的結果分配給此節點的後架構驗證信息集。
二、方法:
- GetAttribute(String) : 返回具備指定名稱的特性的值。
- GetAttributeNode(String) : 返回具備指定名稱的 XmlAttribute。
- HasAttribute(String) : 肯定當前節點是否具備帶有指定名稱的特性。
- GetElementsByTagName(String) : 返回一個 XmlNodeList,它包含與指定 Name 匹配的全部子代元素的列表。
- RemoveAll() : 移除當前節點的全部指定特性和子級。 不移除默認特性。
- RemoveAllAttributes() : 從元素移除全部指定的特性。 不移除默認特性。
- RemoveAttribute(String) : 按名稱移除特性。
- RemoveAttributeAt(Int32) : 從元素中移除具備指定索引的特性節點。 (若是移除的特性有一個默認值,則當即予以替換)。
- RemoveAttributeNode(String, String) : 移除由本地名稱和命名空間 URI 指定的 XmlAttribute。 (若是移除的特性有一個默認值,則當即予以替換)
- CloneNode(Boolean) : 建立此節點的副本。
- WriteContentTo(XmlWriter) : 將該節點的全部子項保存到指定的 XmlWriter 中。
- WriteTo(XmlWriter) : 將當前節點保存到指定的 XmlWriter 中。
5、實例
查找節點:SelectNodescode
string str = @"<JZD_Message xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns=""https://api.xiaoheer.com/"" > <ErrorRes> <Err_code>200</Err_code> <Err_content>認證信息匹配</Err_content> </ErrorRes> </JZD_Message>"; var xd = new System.Xml.XmlDocument(); xd.LoadXml(str);//xml加載xml字符串 XmlNamespaceManager nsManager = new XmlNamespaceManager(xd.NameTable);//建立一個命名空間管理器 nsManager.AddNamespace("xsd", "http://www.w3.org/2001/XMLSchema");//添加字符串時,命名空間管理器將會原子化這些字符串。 nsManager.AddNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance"); nsManager.AddNamespace("amon", "https://api.xiaoheer.com/"); var rowNoteList = xd.SelectNodes("//amon:ErrorRes", nsManager);//查找節點 Console.WriteLine(rowNoteList[0]);
返回:xml
<ErrorRes xmlns="https://api.xiaoheer.com/"> <Err_code>200</Err_code> <Err_content>認證信息匹配</Err_content> </ErrorRes>