XmlReader.ReadContentAs(Type, IXmlNamespaceResolver) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
以指定型别的物件形式讀取內容。
public:
virtual System::Object ^ ReadContentAs(Type ^ returnType, System::Xml::IXmlNamespaceResolver ^ namespaceResolver);
public virtual object ReadContentAs (Type returnType, System.Xml.IXmlNamespaceResolver namespaceResolver);
public virtual object ReadContentAs (Type returnType, System.Xml.IXmlNamespaceResolver? namespaceResolver);
abstract member ReadContentAs : Type * System.Xml.IXmlNamespaceResolver -> obj
override this.ReadContentAs : Type * System.Xml.IXmlNamespaceResolver -> obj
Public Overridable Function ReadContentAs (returnType As Type, namespaceResolver As IXmlNamespaceResolver) As Object
參數
- namespaceResolver
- IXmlNamespaceResolver
IXmlNamespaceResolver 物件,用來解析任何與型別轉換相關的命名空間前置詞。 例如,將 XmlQualifiedName 物件轉換為 xs:string
時,可以使用它。
這個值可以是 null
。
傳回
轉換為要求類型的串連文字內容或屬性值。
例外狀況
此內容的目標類型格式不正確。
嘗試的轉換無效。
returnType
值為 null
。
目前節點不是受支援的節點型別。 如需詳細資訊,請參閱下表。
-或-
在先前的非同步作業完成前呼叫了 XmlReader 方法。 在此情況下,會擲回 InvalidOperationException 與「非同步作業已經在進行中」的訊息。
讀取 Decimal.MaxValue
。
範例
下列範例會使用 方法, ReadContentAs 將 colors 元素的內容傳回字串物件的陣列。
using (XmlReader reader = XmlReader.Create("dataFile_2.xml")) {
reader.ReadToDescendant("item");
reader.MoveToAttribute("colors");
string[] colors = (string[]) reader.ReadContentAs(typeof(string[]),null);
foreach (string color in colors) {
Console.WriteLine("Colors: {0}", color);
}
}
Using reader As XmlReader = XmlReader.Create("dataFile_2.xml")
reader.ReadToDescendant("item")
reader.MoveToAttribute("colors")
Dim colors As String() = CType(reader.ReadContentAs(GetType(String()), Nothing), String())
Dim color As String
For Each color In colors
Console.WriteLine("Colors: {0}", color)
Next color
End Using
該範例使用 dataFile_2.xml
檔案做為輸入。
<root>
<item sale-item='true' productID='123456' colors='blue green black'>
<price>9.95</price>
</item>
<item sale-item='false' productID='124390'>
<price>5.95</price>
</item>
<item sale-item='true' productID='53298'>
<price>12.95</price>
</item>
</root>
備註
這個方法會讀取目前讀取器位置的文字內容,並將它轉換成要求的傳回型別。 文字、泛空白字元、顯著泛空白字元及 CDATA 區段都是串連的。 註解和處理指示會略過,並且實體參考會自動進行解析。
此方法可用來讀取、視需要轉換,以及從目前節點內容傳回不可部分完成的值專案。 如果輸入類型是目前節點類型的有效對應,則會傳回包含目前節點值的目標型別實例。 如需預設對應的清單,請參閱參考頁面中的一節 XmlReader 。
例如,如果您有下列 XML 文字:
<elem>123 <!-- comment --> <?pi my_text?> 456 <?pi another_pi?></elem>
如果資料類型為 ,而且字串陣列會提供給 ReadContentAs 方法呼叫,則整數值會根據有效的 CLR 型別對應清單,從字串轉換。
如果資料不具類型,而且會將字串陣列提供給 ReadContentAs 方法呼叫,則會將內容剖析為不同的字串。 包含兩個字串的陣列會以值 「123」 和 「456」 傳回。 不會保留內容中的空格。
一般而言,讀取不具類型的資料時,內容會根據提供的型別進行剖析。 例如,如果將整數陣列提供給 ReadContentAs 方法呼叫,則會將字串剖析為整數 {123,456} 的陣列。
在下列範例中,XML 文字不會以空格分隔
<elem>123<!-- comment --><?pi my_text?>456789<?pi another_pi?></elem>
如果內容不具類型,且字串陣列會提供給 ReadContentAs 方法呼叫,則會傳回包含一個串連字號串的陣列,其值為 「123456789」。
下表描述此方法如何處理每個節點類型。
XmlNodeType | 傳回值 | 讀取器行為 |
---|---|---|
Text CDATA Whitespace SignificantWhitespace EntityReference EndEntity |
文字、CDATA、泛空白字元及顯著泛空白字元節點的串連內容會轉換為要求的型別。 | 移至下一個開始項目或結尾項目標記。 實體參考會自動展開。 |
Attribute |
與在屬性值上呼叫 XmlConvert.ToXxx 相同。 |
讀取器會保持在目前位置。 |
Comment ProcessingInstruction |
忽略處理指示 (PI) 或註解,並讀取 PI 或註解後面的串連文字內容。 | 移至下一個開始項目或結尾項目標記。 實體參考會自動展開。 |
EndElement |
空字串。 | 讀取器會保持在目前位置。 |
Element XmlDeclaration None Document DocumentType Notation Entity DocumentFragment |
擲回 InvalidOperationException。 | 未定義 (但讀取器通常會保持在目前位置)。 |
如需詳細資訊,請參閱參考頁面的 XmlReader 一節和 W3C XML 架構第 2 部分:資料類型 建議。
如需這個方法的非同步版本,請參閱 ReadContentAsAsync 。