ASP.NET 2.0 XML 系列(4):用XmlReader类介绍
?
(本文摘自MSDN)
XmlReader 類是一個提供對 XML 數(shù)據(jù)的非緩存、只進只讀訪問的抽象基類。該類符合 W3C 可擴展標記語言 (XML) 1.0 和 XML 中的命名空間的建議。
XmlReader 類支持從流或文件讀取 XML 數(shù)據(jù)。該類定義的方法和屬性使您可以瀏覽數(shù)據(jù)并讀取節(jié)點的內(nèi)容。當前節(jié)點指讀取器所處的節(jié)點。使用任何返回當前節(jié)點值的讀取方法和屬性推進讀取器。
XmlReader 類使您可以:
-
檢查字符是不是合法的 XML 字符,元素和屬性的名稱是不是有效的 XML 名稱。
-
檢查 XML 文檔的格式是否正確。
-
根據(jù) DTD 或架構(gòu)驗證數(shù)據(jù)。
-
從 XML 流檢索數(shù)據(jù)或使用提取模型跳過不需要的記錄。
使用XmlReader讀取XML文檔之前,我們有必要了解一下這個類的屬性和方法,以及節(jié)點XmlNode的類型。
1. XmlReader類的屬性
| AttributeCount | 當在派生類中被重寫時,獲取當前節(jié)點上的屬性數(shù)。 |
| BaseURI | 當在派生類中被重寫時,獲取當前節(jié)點的基 URI。 |
| CanReadBinaryContent | 獲取一個值,該值指示 XmlReader 是否實現(xiàn)二進制內(nèi)容讀取方法。 |
| CanReadValueChunk | 獲取一個值,該值指示 XmlReader 是否實現(xiàn) ReadValueChunk 方法。 |
| CanResolveEntity | 獲取一個值,該值指示此讀取器是否可以分析和解析實體。 |
| Depth | 當在派生類中被重寫時,獲取 XML 文檔中當前節(jié)點的深度。 |
| EOF | 當在派生類中被重寫時,獲取一個值,該值指示此讀取器是否定位在流的結(jié)尾。 |
| HasAttributes | 獲取一個值,該值指示當前節(jié)點是否有任何屬性。 |
| HasValue | 當在派生類中被重寫時,獲取一個值,該值指示當前節(jié)點是否可以具有 Value。 |
| IsDefault | 當在派生類中被重寫時,獲取一個值,該值指示當前節(jié)點是否是從 DTD 或架構(gòu)中定義的默認值生成的屬性。 |
| IsEmptyElement | 當在派生類中被重寫時,獲取一個值,該值指示當前節(jié)點是否為空元素(例如 <MyElement/>)。 |
| Item | 已重載。 當在派生類中被重寫時,獲取此屬性的值。 |
| LocalName | 當在派生類中被重寫時,獲取當前節(jié)點的本地名稱。 |
| Name | 當在派生類中被重寫時,獲取當前節(jié)點的限定名。 |
| NamespaceURI | 當在派生類中被重寫時,獲取讀取器定位在其上的節(jié)點的命名空間 URI(采用 W3C 命名空間規(guī)范中定義的形式)。 |
| NameTable | 當在派生類中被重寫時,獲取與該實現(xiàn)關(guān)聯(lián)的 XmlNameTable。 |
| NodeType | 當在派生類中被重寫時,獲取當前節(jié)點的類型。 |
| Prefix | 當在派生類中被重寫時,獲取與當前節(jié)點關(guān)聯(lián)的命名空間前綴。 |
| QuoteChar | 當在派生類中被重寫時,獲取用于括住屬性節(jié)點值的引號字符。 |
| ReadState | 當在派生類中被重寫時,獲取讀取器的狀態(tài)。 |
| SchemaInfo | 獲取作為架構(gòu)驗證結(jié)果分配給當前節(jié)點的架構(gòu)信息。 |
| Settings | 獲取用于創(chuàng)建此 XmlReader 實例的 XmlReaderSettings 對象。 |
| Value | 當在派生類中被重寫時,獲取當前節(jié)點的文本值。 |
| ValueType | 獲取當前節(jié)點的公共語言運行庫 (CLR) 類型。 |
| XmlLang | 當在派生類中被重寫時,獲取當前的 xml:lang 范圍。 |
| XmlSpace | 當在派生類中被重寫時,獲取當前的 xml:space 范圍。 |
?
2. XmlReader類的方法
?
| 名稱 | 說明 |
| Close | 當在派生類中被重寫時,將 ReadState 更改為 Closed。 |
| Create | 已重載。 創(chuàng)建一個新的 XmlReader 實例。 |
| Equals? | 已重載。 確定兩個 Object 實例是否相等。 (從 Object 繼承。) |
| GetAttribute | 已重載。 當在派生類中被重寫時,獲取屬性的值。 |
| GetHashCode? | 用作特定類型的哈希函數(shù)。GetHashCode 適合在哈希算法和數(shù)據(jù)結(jié)構(gòu)(如哈希表)中使用。 (從 Object 繼承。) |
| GetType? | 獲取當前實例的 Type。 (從 Object 繼承。) |
| IsName | 獲取一個值,該值指示字符串參數(shù)是否是有效的 XML 名稱。 |
| IsNameToken | 獲取一個值,該值指示該字符串參數(shù)是否是有效的 XML 名稱標記。 |
| IsStartElement | 已重載。 測試當前內(nèi)容節(jié)點是否是開始標記。 |
| LookupNamespace | 當在派生類中被重寫時,在當前元素的范圍內(nèi)解析命名空間前綴。 |
| MoveToAttribute | 已重載。 當在派生類中被重寫時,移動到指定的屬性。 |
| MoveToContent | 檢查當前節(jié)點是否是內(nèi)容(非空白文本、CDATA、Element、EndElement、EntityReference 或 EndEntity)節(jié)點。如果此節(jié)點不是內(nèi)容節(jié)點,則讀取器向前跳至下一個內(nèi)容節(jié)點或文件結(jié)尾。它跳過以下類型的節(jié)點:ProcessingInstruction、DocumentType、Comment、Whitespace 或 SignificantWhitespace。 |
| MoveToElement | 當在派生類中被重寫時,移動到包含當前屬性節(jié)點的元素。 |
| MoveToFirstAttribute | 當在派生類中被重寫時,移動到第一個屬性。 |
| MoveToNextAttribute | 當在派生類中被重寫時,移動到下一個屬性。 |
| Read | 當在派生類中被重寫時,從流中讀取下一個節(jié)點。 |
| ReadAttributeValue | 當在派生類中被重寫時,將屬性值解析為一個或多個 Text、EntityReference 或 EndEntity 節(jié)點。 |
| ReadContentAs | 將內(nèi)容作為指定類型的對象讀取。 |
| ReadContentAsBase64 | 讀取內(nèi)容并返回 Base64 解碼的二進制字節(jié)。 |
| ReadContentAsBinHex | 讀取內(nèi)容并返回 BinHex 解碼的二進制字節(jié)。 |
| ReadContentAsBoolean | 將當前位置的文本內(nèi)容作為 Boolean 讀取。 |
| ReadContentAsDateTime | 將當前位置的文本內(nèi)容作為 DateTime 對象讀取。 |
| ReadContentAsDecimal | 將當前位置的文本內(nèi)容作為 Decimal 對象讀取。 |
| ReadContentAsDouble | 將當前位置的文本內(nèi)容作為雙精度浮點數(shù)讀取。 |
| ReadContentAsFloat | 將當前位置的文本內(nèi)容作為單精度浮點數(shù)讀取。 |
| ReadContentAsInt | 將當前位置的文本內(nèi)容作為 32 位有符號整數(shù)讀取。 |
| ReadContentAsLong | 將當前位置的文本內(nèi)容作為 64 位有符號整數(shù)讀取。 |
| ReadContentAsObject | 將當前位置的文本內(nèi)容作為 Object 讀取。 |
| ReadContentAsString | 將當前位置的文本內(nèi)容作為 String 對象讀取。 |
| ReadElementContentAs | 已重載。 讀取當前元素,并將內(nèi)容作為指定類型的對象返回。 |
| ReadElementContentAsBase64 | 讀取元素并對 Base64 內(nèi)容進行解碼。 |
| ReadElementContentAsBinHex | 讀取元素并對 BinHex 內(nèi)容進行解碼。 |
| ReadElementContentAsBoolean | 已重載。 將當前元素值作為 Boolean 對象讀取。 |
| ReadElementContentAsDateTime | 已重載。 讀取當前元素并將內(nèi)容作為 DateTime 對象返回。 |
| ReadElementContentAsDecimal | 已重載。 將當前元素值作為 Decimal 對象讀取。 |
| ReadElementContentAsDouble | 已重載。 讀取當前元素并將內(nèi)容作為雙精度浮點數(shù)返回。 |
| ReadElementContentAsFloat | 已重載。 將當前元素值作為單精度浮點數(shù)讀取。 |
| ReadElementContentAsInt | 已重載。 讀取當前元素并將內(nèi)容作為 32 位有符號整數(shù)返回。 |
| ReadElementContentAsLong | 已重載。 讀取當前元素并將內(nèi)容作為 64 位有符號整數(shù)返回。 |
| ReadElementContentAsObject | 已重載。 讀取當前元素并將內(nèi)容作為 Object 返回。 |
| ReadElementContentAsString | 已重載。 讀取當前元素并將內(nèi)容作為 String 對象返回。 |
| ReadElementString | 已重載。 這是一個用于讀取簡單純文本元素的 Helper 方法。 |
| ReadEndElement | 檢查當前內(nèi)容節(jié)點是否為結(jié)束標記并將讀取器推進到下一個節(jié)點。 |
| ReadInnerXml | 當在派生類中被重寫時,將所有內(nèi)容(包括標記)當做字符串讀取。 |
| ReadOuterXml | 當在派生類中被重寫時,讀取表示該節(jié)點和所有它的子級的內(nèi)容(包括標記)。 |
| ReadStartElement | 已重載。 檢查當前節(jié)點是否為元素并將讀取器推進到下一個節(jié)點。 |
| ReadString | 當在派生類中被重寫時,將元素或文本節(jié)點的內(nèi)容當做字符串讀取。 |
| ReadSubtree | 返回新的 XmlReader 實例,此實例可用于讀取當前節(jié)點及其所有子節(jié)點。 |
| ReadToDescendant | 已重載。 讓 XmlReader 前進到下一個匹配的子代元素。 |
| ReadToFollowing | 已重載。 一直讀取,直到找到命名元素。 |
| ReadToNextSibling | 已重載。 讓 XmlReader 前進到下一個匹配的同級元素。 |
| ReadValueChunk | 讀取嵌入在 XML 文檔中的大量文本流。 |
| ReferenceEquals? | 確定指定的 Object 實例是否是相同的實例。 (從 Object 繼承。) |
| ResolveEntity | 當在派生類中被重寫時,解析 EntityReference 節(jié)點的實體引用。 |
| Skip | 跳過當前節(jié)點的子級。 |
| ToString? | 返回表示當前 Object 的 String。 (從 Object 繼承。) |
?
3. XmlNodeType枚舉成員
?
| Attribute | 屬性(例如,id='123')。 Attribute 節(jié)點可以具有以下子節(jié)點類型:Text 和 EntityReference。Attribute 節(jié)點不以任何其他節(jié)點類型子節(jié)點的形式出現(xiàn)。不將其視為 Element 的子節(jié)點。 |
| CDATA | CDATA 節(jié)(例如,<![CDATA[my escaped text]]>)。CDATA 節(jié)用于轉(zhuǎn)義否則將被識別為標記的文本塊。CDATA 節(jié)點不能有任何子節(jié)點。它可以以 DocumentFragment、EntityReference 和 Element 節(jié)點子級的形式出現(xiàn)。 |
| Comment | 注釋(例如,<!-- my comment -->)。 Comment 節(jié)點不能有任何子節(jié)點。它可以以 Document、DocumentFragment、Element 和 EntityReference 節(jié)點子級的形式出現(xiàn)。 |
| Document | 作為文檔樹的根的文檔對象提供對整個 XML 文檔的訪問。 Document 節(jié)點可以具有以下子節(jié)點類型:XmlDeclaration、Element(最多一個)、ProcessingInstruction、Comment 和 DocumentType。它不能以任何節(jié)點類型子級的形式出現(xiàn)。 |
| DocumentFragment | 文檔片段。 DocumentFragment 節(jié)點將節(jié)點或子樹與文檔關(guān)聯(lián)起來,而實際上并不包含在該文檔中。DocumentFragment 節(jié)點可以具有以下子節(jié)點類型:Element、ProcessingInstruction、Comment、Text、CDATA 和 EntityReference。它不能以任何節(jié)點類型子級的形式出現(xiàn)。 |
| DocumentType | 由以下標記指示的文檔類型聲明(例如,<!DOCTYPE...>)。 DocumentType 節(jié)點可以具有以下子節(jié)點類型:Notation 和 Entity。它可以以 Document 節(jié)點子級的形式出現(xiàn)。 |
| Element | 元素(例如,<item>)。 Element 節(jié)點可以具有以下子節(jié)點類型:Element、Text、Comment、ProcessingInstruction、CDATA 和 EntityReference。它可以是 Document、DocumentFragment、EntityReference 和 Element 節(jié)點的子級。 |
| EndElement | 末尾元素標記(例如,</item>)。 當 XmlReader 到達元素的末尾時,返回 EndElement 節(jié)點。 |
| EndEntity | 由于調(diào)用 ResolveEntity 而使 XmlReader 到達實體替換的末尾時返回。 |
| Entity | 實體聲明(例如,<!ENTITY...>)。 Entity 節(jié)點可以具有表示已展開實體的子節(jié)點(例如 Text 和 EntityReference 節(jié)點)。它可以以 DocumentType 節(jié)點子級的形式出現(xiàn)。 |
| EntityReference | 實體引用(例如,#)。 EntityReference 節(jié)點可以具有以下子節(jié)點類型:Element、ProcessingInstruction、Comment、Text、CDATA 和 EntityReference。它可以以 Attribute、DocumentFragment、Element 和 EntityReference 節(jié)點子級的形式出現(xiàn)。 |
| None | 如果未調(diào)用 Read 方法,則由 XmlReader 返回。 |
| Notation | 文檔類型聲明中的表示法(例如,<!NOTATION...>)。Notation 節(jié)點不能具有任何子節(jié)點。它可以以 DocumentType 節(jié)點子級的形式出現(xiàn)。 |
| ProcessingInstruction | 處理指令(例如,<?pi test?>)。 ProcessingInstruction 節(jié)點不能具有任何子節(jié)點。它可以以 Document、DocumentFragment、Element 和 EntityReference 節(jié)點子級的形式出現(xiàn)。 |
| SignificantWhitespace | 混合內(nèi)容模型中標記間的空白或 xml:space="preserve" 范圍內(nèi)的空白。 |
| Text | 節(jié)點的文本內(nèi)容。 Text 節(jié)點不能具有任何子節(jié)點。它可以以 Attribute、DocumentFragment、Element 和 EntityReference 節(jié)點的子節(jié)點的形式出現(xiàn)。 |
| Whitespace | 標記間的空白。 |
| XmlDeclaration | XML 聲明(例如,<?xml version='1.0'?>)。XmlDeclaration 節(jié)點必須是文檔中的第一個節(jié)點。它不能具有子級。它是 Document 節(jié)點的子級。它可以具有提供版本和編碼信息的屬性。 |
轉(zhuǎn)載于:https://www.cnblogs.com/cnblogsfans/archive/2008/03/15/1107217.html
總結(jié)
以上是生活随笔為你收集整理的ASP.NET 2.0 XML 系列(4):用XmlReader类介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [导入]使用RDLC报表(二)--使用自
- 下一篇: 脚本调用后台代码 asp.net