ASP.NET 2.0 XML 系列(4):用XmlReader類介紹

來源:互聯網
上載者:User

 

(本文摘自MSDN)

XmlReader 類是一個提供對 XML 資料的非緩衝、只進唯讀訪問的抽象基類。該類符合 W3C 可延伸標記語言 (XML) (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 檢查當前節點是否是內容(非空白文本、CDATAElementEndElementEntityReferenceEndEntity)節點。如果此節點不是內容節點,則讀取器向前跳至下一個內容節點或檔案結尾。它跳過以下類型的節點:ProcessingInstructionDocumentTypeCommentWhitespaceSignificantWhitespace
MoveToElement 當在衍生類別中被重寫時,移動到包含當前屬性節點的元素。
MoveToFirstAttribute 當在衍生類別中被重寫時,移動到第一個屬性。
MoveToNextAttribute 當在衍生類別中被重寫時,移動到下一個屬性。
Read 當在衍生類別中被重寫時,從流中讀取下一個節點。
ReadAttributeValue 當在衍生類別中被重寫時,將屬性值解析為一個或多個 TextEntityReferenceEndEntity 節點。
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  返回表示當前 ObjectString。 (從 Object 繼承。)

 

3. XmlNodeType枚舉成員

 


成員名稱 說明
Attribute 屬性(例如,id='123')。 Attribute 節點可以具有以下子節點類型:TextEntityReferenceAttribute 節點不以任何其他節點類型子節點的形式出現。不將其視為 Element 的子節點。
CDATA CDATA 節(例如,<![CDATA[my escaped text]]>)。CDATA 節用於轉義否則將被識別為標記的文字區塊。CDATA 節點不能有任何子節點。它可以以 DocumentFragmentEntityReferenceElement 節點子級的形式出現。
Comment 注釋(例如,<!-- my comment -->)。 Comment 節點不能有任何子節點。它可以以 DocumentDocumentFragmentElementEntityReference 節點子級的形式出現。
Document 作為文檔樹的根的文檔對象提供對整個 XML 文檔的訪問。 Document 節點可以具有以下子節點類型:XmlDeclarationElement(最多一個)、ProcessingInstructionCommentDocumentType。它不能以任何節點類型子級的形式出現。
DocumentFragment 文檔片段。 DocumentFragment 節點將節點或子樹與文檔關聯起來,而實際上並不包含在該文檔中。DocumentFragment 節點可以具有以下子節點類型:ElementProcessingInstructionCommentTextCDATAEntityReference。它不能以任何節點類型子級的形式出現。
DocumentType 由以下標記指示的文件類型聲明(例如,<!DOCTYPE...>)。 DocumentType 節點可以具有以下子節點類型:NotationEntity。它可以以 Document 節點子級的形式出現。
Element 元素(例如,<item>)。 Element 節點可以具有以下子節點類型:ElementTextCommentProcessingInstructionCDATAEntityReference。它可以是 DocumentDocumentFragmentEntityReferenceElement 節點的子級。
EndElement 末尾元素標記(例如,</item>)。 當 XmlReader 到達元素的末尾時,返回 EndElement 節點。
EndEntity 由於調用 ResolveEntity 而使 XmlReader 到達實體替換的末尾時返回。
Entity 實體聲明(例如,<!ENTITY...>)。 Entity 節點可以具有表示已展開實體的子節點(例如 TextEntityReference 節點)。它可以以 DocumentType 節點子級的形式出現。
EntityReference 實體引用(例如,&num;)。 EntityReference 節點可以具有以下子節點類型:ElementProcessingInstructionCommentTextCDATAEntityReference。它可以以 AttributeDocumentFragmentElementEntityReference 節點子級的形式出現。
None 如果未調用 Read 方法,則由 XmlReader 返回。
Notation 文件類型聲明中的標記法(例如,<!NOTATION...>)。Notation 節點不能具有任何子節點。它可以以 DocumentType 節點子級的形式出現。
ProcessingInstruction 處理指示(例如,<?pi test?>)。 ProcessingInstruction 節點不能具有任何子節點。它可以以 DocumentDocumentFragmentElementEntityReference 節點子級的形式出現。
SignificantWhitespace 混合內容模型中標記間的空白或 xml:space="preserve" 範圍內的空白。
Text 節點的常值內容。 Text 節點不能具有任何子節點。它可以以 AttributeDocumentFragmentElementEntityReference 節點的子節點的形式出現。
Whitespace 標記間的空白。
XmlDeclaration XML 聲明(例如,<?xml version='1.0'?>)。XmlDeclaration 節點必須是文檔中的第一個節點。它不能具有子級。它是 Document 節點的子級。它可以具有提供版本和編碼資訊的屬性。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.