讀取具型別的資料
更新: November 2007
XmlReader 類別允許呼叫端讀取 XML 資料,並傳回做為簡單型別 Common Language Runtime (CLR) 值 (非字串) 的值。使用者可以利用提供的方法取得使用系統型別的值,但無法取得字串值。這些新方法可讓使用者取得以最適合用於程式碼撰寫工作之表示方式表示的值,而且不必以手動方式執行值的轉換及剖析。
如果 XML 資料不具有任何與其相關聯的結構描述或資料型別資訊,XmlReader 類別就會嘗試將節點值轉換為指定的 CLR 型別。例如,如果您呼叫 ReadContentAsBoolean 方法,則讀取器會嘗試將文字轉換為 Boolean 物件。
XmlReader 類別會使用 W3C XML 結構描述第二部:資料型別建議事項 (英文) 所定義的規則。
具型別內容
ReadContentAsBoolean、ReadContentAsDateTime、ReadContentAsDouble、ReadContentAsLong、ReadContentAsInt 及 ReadContentAsString 方法可用於傳回特定的 CLR 物件。這些方法會讀取目前讀取器位置的文字內容,並將其轉換為所要求的傳回型別。文字、泛空白字元、顯著泛空白字元及 CDATA 區段都是串連的。註解和處理指示會略過,並且實體參考會自動進行解析。
ReadContentAs 方法可用於讀取文字內容,並傳回指定型別的物件。
ReadContentAsObject 方法會傳回最適合型別的 boxed CLR (由 ValueType 屬性指定)。如果內容不具型別,則讀取器會以字串形式傳回內容。
呼叫任一 ReadContentAs 方法後,讀取器會置於下一個 Element 或 EndElement 節點上。
下表說明 ReadContentAs 方法處理每個節點型別的方法。
XmlNodeType |
傳回值 |
讀取器行為 |
---|---|---|
Text CDATA Whitespace SignificantWhitespace EntityReference EndEntity |
文字、CDATA、泛空白字元及顯著泛空白字元節點的串連內容會轉換為要求的型別。 |
移至下一個開始項目或結尾項目標記。實體參考會自動展開。 |
Attribute |
與屬性值上的 XmlConvert.ToXXX 相同。 |
讀取器會保持在目前位置。 |
Comment ProcessingInstruction |
忽略處理指示 (PI) 或註解,並讀取 PI 或註解後面的串連文字內容。 |
移至下一個開始項目或結尾項目標記。實體參考會自動展開。 |
EndElement |
空字串。 |
讀取器會保持在目前位置。 |
Element XmlDeclaration None Document DocumentType Notation Entity DocumentFragment |
未定義 (但讀取器通常會保持在目前位置)。 |
具型別項目內容
XmlReader 類別具有專門為讀取具型別項目內容而設計的方法。這些方法僅可針對項目節點型別呼叫。這些方法無法用於包含項目子系或混合內容的項目。呼叫後,XmlReader 物件會讀取開始標記、讀取項目內容,然後移動到超過結尾項目標記以後的部分。處理指示及註解會略過,並且實體會展開。
ReadElementContentAsBoolean、ReadElementContentAsDateTime、ReadElementContentAsDouble、ReadElementContentAsLong、ReadElementContentAsInt 及 ReadElementContentAsString 方法可讀取項目內容並傳回特定的 CLR 物件。
ReadElementContentAs 方法可用於讀取項目內容,並傳回指定型別的物件。
ReadElementContentAsObject 方法會傳回最適合型別的 boxed CLR (由 ValueType 屬性指定)。對應 XML 資料型別至 CLR 類型 主題說明 XmlReader 類別決定最適合之 CLR 型別的方法。如果內容不具型別,則讀取器會以字串形式傳回內容。