ASP.NET XML

一.DOM簡介

1.什麼是DOM

  XML:XML是一種跨語言,跨平臺的數據存儲格式,能夠在任何兩個應用程序間共享數據,這兩個程序可能使用不一樣的語言編寫,由不一樣的公司構建,運行在不一樣的操做系統上.數據庫

      XML自己是一個文本文件,用於存儲數據的,有人把XML當成小型數據庫來使用.編程

  DOM:Document Object Model簡稱爲DOM,用W3C的話說,DOM是一種容許程序或腳本動態地訪問更新文檔內容,結構和樣式的,獨立於平臺和語言的規範化接口.編程語言

     通俗的說,DOM就是一種規範.函數

  DOM的規範級別:spa

    1.DOM級別1(Level 1)操作系統

      DOM級別1於1998年10月1日成爲W3C推薦標準.專一於HTML和XML文檔模型.它含有文檔導航和處理功能.對象

    2.DOM級別2(Level 2)排序

      DOM級別2規範發佈於2000年11月13日.DOM級別2對DOM級別1添加了樣式表對象模型,並定義了操做附於文檔之上的樣式信息的功能性.DOM級別2同時還定義了一個事件模型,並提供了對XML命名空間的支持.繼承

    3.DOM級別3(Level 3)遞歸

      DOM級別3規定了內容模型(DTD和Schemas)和文檔驗證.同時規定了文檔加載和保存,文檔查看,文檔格式化和關鍵事件.DOM級別3創建於DOM級別2之上.

2.DOM的做用和地位

  DOM的做用:DOM爲編程語言提供一組與平臺無關的類和接口(API),編程者可使用DOM中的API來對XML進行增,刪,改,查的操做.

  DOM的地位:DOM處在編程語言和XML文件之間.

 3.DOM模型

  使用DOM來解析XML文檔,首先DOM解析器會把XML加載到內存,XML文件在內存中以對象樹的形式存在,這個對象樹模型就是DOM模型.

    使用ODM來解析XML文檔時,XML中全部的信息在對象樹中以樹節點(Node)的形式存在.

    DOM樹中的節點類型主要有五種:

      1.元素節點(Element):XML中的元素在DOM樹中成爲元素節點,節點類型(NodeType)爲1;

      2.屬性節點(Attribute):XML中的屬性在DOM樹中成爲屬性節點,節點類型(NodeType)爲2;

      3.文本節點(Text):XML中的文本在DOM樹中成爲文本節點,節點類型(NodeType)爲3;

      4.註釋節點(Comments):XML中的註釋在DOM樹中成爲註釋節點,節點類型(NodeType)爲8;

      5.文檔節點(Docment):是DOM樹的根節點,節點類型(NodeType)爲9;

二. .NET中的DOM經常使用對象

  在.NET的System.Xml命名空間中包含了操做XML的類和接口,其中基於DOM操做XML的核心類如表所示:

.NET中基於DOM核心類
類名 說明
XmlDocument 表示一個XML文檔
XmlNode 表示XML文檔中的單個節點
XmlNodeList 表示排序的節點集合
XmlElement 表示一個元素
XmlAttribute 表示一個屬性
XmlAttributeCollection 表示元素節點的屬性集合
XmlText 表示元素或屬性的文本內容

  1.XmlNode類

      XmlNode是DOM最關鍵的一個類,它的實例表示一個DOM樹中的一個節點.XmlNode類沒有公共構造函數,這表示不能用new關鍵字建立XmlNode的實例.

       1)屬性

XmlNode類經常使用屬性及說明
屬性 說明
Attributes

若是節點的類型是XmlNodeType.Element,該屬性就返回包含元素特性的XmlAttributeCollection(派生於XmlNamedNodeMap),不然返回null.

ChildNodes 獲取節點中全部子節點的XmlNodeList.若是該節點沒有子節點,該屬性就返回一個空列表.
FirstChild 獲取一個XmlNode,表示當前節點的第一個子節點.若是該節點沒有子節點,就返回一個null.
HasChildNode 獲取一個布爾值,表示該節點是否有子節點.若是有子節點,該布爾值就是true,不然就是false.
InnerText 表示一個字符串,其值把當前節點及其全部子節點的文本內容鏈接起來.
InnerXml 獲取或設置當前節點的子內容標記.
LastChild 獲取一個XmlNode實例,表示當前節點的最後一個子節點,若是沒有這樣的節點,就返回一個空引用.
Name 當在派生類中被重寫時,對不一樣的節點類型以字符串形式返回節點的限定名稱.
NextSibling 該屬性返回XmlNode實例,它表示按照文檔順序與當前節點同級(即有相同的深度)的下一節點.若是不存在這樣的節點,就返回一個空引用.
NodeType 當在派生類中被重寫時,獲取當前節點的類型,返回一個XmlNodeType值.
OuterXml 這個字符串屬性遞歸獲取當前節點及其全部子節點的XML標記.
OwnerDocument 獲取節點所屬的XmlDocument實例.若是節點自己是一個文檔,該屬性就是null.
ParentNode

獲取XmlNode的父節點,若是沒有就返回null.

PreviousSibling 獲取與當前節點深度相同的前一個XmlNode,若是沒有就返回null.
Value 獲取或設置節點的值.

        2)方法

 
方法 用法
AppendChild 帶一個XmlNode類型的參數(或其派生類型),該方法把參數添加到當前節點的子節點列表的末尾.返回值是所添加的節點.
Clone 對節點執行深複製(即包含全部的派生節點和屬性).該方法沒有參數,返回XmlNode副本,等價於CloneNode(true).
CloneNode 這是一個抽象方法,它複製當前節點.
InsertAfter 在給定引用節點的子節點列表中,在該引用節點的後面插入一個節點.該方法帶兩個XmlNode類型的參數:一個是要添加的子節點,另外一個是引用節點.
InsertBefore 與InsertAfter類型,但新節點在引用節點的前面插入(除非引用節點爲null,此時節點添加到子節點列表的最後).
PrependChild 把一個節點添加到該節點的子節點列表的開頭.
RemoveAll 刪除調用節點的全部子節點和/或特性.
RemoveChild 刪除指定的子節點,該方法帶一個XmlNode類型的參數,刪除成功就返回該節點.
ReplaceChild 用一個新節點代替一個子節點,返回舊(被替換的)節點.

  2.XmlDocument類

      XmlDocument類派生自XmlNode類.其實例表示一個Xml文檔對象.XmlDocument類有許多用途.它不只能夠執行DOM模型中全部外圍結構的接口,還能夠建立新節點.

        1)屬性

XmlDocument的經常使用屬性
屬性 說明
DocumentElement(只讀) 返回組成DOM樹中根的XmlElement.
DocumentType(只讀) 把DOCTYPE聲明(若是有)返回一個XmlDocumentType對象
PreserveWhitespace

這個布爾屬性控制着在執行Load,LoadXml和Save過程當中是否保留空白.

若是在執行這些操做中的任何一個以前,該布爾屬性是true,就保留空白.

        2)方法

XmlDocument的經常使用方法
方法 說明
CreateAttribute 用給定的名稱建立一個XmlAttribute節點.
CreateElement 建立一個XmlElement節點.
CreateNode 根據給出的類型,名稱和命名空間信息,建立並返回一個XmlNode.
CreateTextNode 根據一個包含新節點中文本內容的字符串,建立並返回一個XmlText節點.
CreateXmlDeclaration 根據下面的參數建立一個XmlDeclaration節點.
GetElementById 返回一個匹配給定字符串ID參數的XmlElement.
GetElementByTagName 返回一個XmlNodeList,其中包含其名稱匹配給定名稱的全部子元素.
Load 加載一個XML文檔,並解析它.
LoadXml 從字符串中加載XML文檔.這個字符串參數由文檔標記組成.
Save 把XML文檔寫到給定的位置上.

  3.XmlNodeList類

      XMLNodeList是一個節點集合類,其元素爲XmlNode類型.XmlNodeList沒有公共構造函數,所以不能建立和刪除XmlNodeList類的實例.得到XmlNodeList實例最經常使用的方式是引用XmlNode的ChildNodes屬性.

        1)屬性

XmlNodeList的屬性
屬性 說明
Count 獲取XmlNodeList中的節點數
ItemOf(只讀) 檢索給定索引處的節點

 

 

XmlNodeList的方法
方法 用法
GetEnumerator 該方法沒有參數,返回一個IEnumerator實例.以支持在列表上執行foreach迭代.
Item 該方法帶一個基於0的整數索引參數,返回列表中該索引所在位置的XmlNode.若是索引超出列表的範圍,該方法就返回null.

 

 

 

 

XmlElement的經常使用屬性
屬性 說明
Attributes 獲取一個XmlAttributeCollection,其中包含該元素節點的全部屬性.
ClildNodes 獲取元素節點的全部子節點.(繼承自XmlNode).
HasAttributes 獲取一個boolean值,該值指示當前元素節點是否有任何屬性.
HasChildNodes 獲取一個值,該值指示節點是否有任何子節點.(繼承自XmlNode).
InnerText 獲取或設置節點及其全部子級的串連值.(重寫XmlNode.InnerText).
InnerXml 獲取或設置只表示此節點子級的標記.(重寫XmlNode.InnerXml).
IsEmpty

獲取或設置一個布爾值.當該值爲true時,元素就是空的,並以<name />縮寫形式表示.若是元素是子內容或以完整形式<name><name/>表示,

則該屬性返回false.若是這個屬性設置爲true,就刪除它的全部子內容,由於這將指定該元素應爲空.

LastChild 獲取元素節點的最後一個子級.(繼承自XmlNode).
Name 獲取元素節點的限定名.(重寫XmlNode.Name).
NextSibling 獲取這個元素節點後面的XmlNode,若是不存在這樣的節點,該屬性就返回null.
NodeType 獲取當前元素節點的類型.(重寫XmlNode.NodeTye).返回XmlNodeType.Element.
OwnerDocument 獲取該元素節點所屬的XmlDocument(重寫XmlNode.OwnerDocument).
PreviousSibling 獲取緊接在該元素節點以前的節點.(繼承自XmlLinkedNode).
Value 獲取或設置元素節點的值.(繼承自XmlNode).

 

 

Xmlelement的經常使用方法
方法 說明
AppendChild 將指定的節點添加到該節點的子節點列表的末尾.(繼承自XmlNode).
CloneNode

複製屬性,並把副本返回爲一個XmlNode實例.該方法帶一個布爾參數(該參數爲true時,會遞歸複製子內容,進行深複製,

該參數爲false時,則僅複製元素).

GetAttribute 返回指定屬性的屬性值.
GetAttributeNode 與GetAttribute相似(包括重載的參數列表),但若是找到匹配,返回類型是XmlAttribute,若是沒有找到匹配,則返回null.
GetElementsByTagName 返回一個XmlNodeList,它包含與指定名稱匹配的全部子代元素的列表.
HasAttribute 肯定當前節點是否具備指定的屬性.
RemoveAll 移除當前節點的全部指定屬性和子級.不移除默認屬性.(重寫XmlNode.RemoveAll()).
RemoveAttribute 移除指定的屬性.
RemoveAttributeAt 從元素中移除具備指定索引的屬性節點.
RemoveAttributeNode 從元素中刪除並返回XmlAttribute.
RemoveChild 移除指定的子節點.(繼承自XmlNode).
ReplaceChild 用newChild節點替換子節點oldChild.(繼承自XmlNode).
SetAttribute 設置指定屬性的值.
SetAttributeNode 添加一個新XmlAttribute.

  5.XmlAttribute類

      XmlAttribute是System.Xml命名空間中最經常使用的DOM類之一.它也直接派生自XmlNode,是惟一適合於表示XML屬性的類.

        1)屬性

XmlAttribute的經常使用屬性
屬性 含義
Name 把屬性節點的限定名稱返回爲一個字符串.
NodeType 獲取一個XmlNodeType枚舉,其值爲XmlNodeType.Attribute.
NextSibling 獲取緊接在該節點以後的節點.(繼承自XmlNode).
OwnerDocument 獲取這個特性所屬的XmlDocument.
OwnerElement 獲取該屬性所屬的XmlElement.
PreviousSibling 獲取緊接在該屬性節點以前的節點.(繼承自XmlNode).
Value 獲取或設置節點的值.(重寫XmlNode.Value).

        2)方法

          XmlAttribute類的Clone()方法能夠建立此屬性節點的一個副本.

  6.XmlAttributeCollection類

      XmlAttributeCollection表示能夠按名稱或索引訪問的屬性的集合,其元素爲XmlAttribute類型.該類派生自XmlNameNodeMap類.

        1)屬性

          這個類的最經常使用的屬性是Count.這是一個只讀整數屬性,用於獲取集合所包含的XmlAttribute節點數.

        2)方法

XmlAttributeCollection的經常使用方法
方法 說明
Append 將指定的屬性插入集合,並將其做爲集合中的最後一個節點.
GetEnumerator 提供一個IEnumerator實例,以支持在映射內容上執行foreach的枚舉.
InsertAfter 將指定屬性直接插入到指定引用屬性以後.
InsertBefore 將指定屬性直接插入到指定引用屬性以前.
Item 檢索位於XmlNamedNodeMap中指定索引處的節點.(繼承自XmlNamedNodeMap).
Prepend 將指定屬性插入集合中,並將其做爲集合的第一個節點.
Remove 從集合中移除指定的屬性.
RemoveAll 從集合中移除全部屬性.
RemoveAt 從集合中移除與指定的索引對應的屬性.
RemoveNamedItem 從映射中刪除指定的節點,該方法有兩個重載形式,它們分別匹配GetNamedItem的兩個不一樣版本.
SetNamedItem

在集合中插入所提供的XmlNode實例.若是傳送過來的節點已經在映射中(就是修改節點的內容),

就返回舊(被替代的)節點.若是節點是新的,就返回null.

  7.XmlText類

      XmlText表示元素節點或屬性節點的文本內容.該類沒有構造方法,但可使用XmlNode的CreateTextNode()方法獲得實例.

        1)屬性

          XmlText的Length屬性能夠獲取數據的長度(以字符爲單位).(從XmlCharacterData繼承).XmlText的Value屬性用於獲得文本節點的位置.

相關文章
相關標籤/搜索