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