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 | 傳回值 | 讀者行為 |
|---|---|---|
TextCDATAWhitespaceSignificantWhitespaceEntityReferenceEndEntity |
串接內容的文字、CDATA、空白空間及重要空白節點轉換為所需類型。 | 移動到下一個起始元素或結束元素標籤。 實體參考會自動展開。 |
Attribute |
就像呼叫 XmlConvert.ToXxx 屬性值一樣。 |
讀者仍停留在當前位置。 |
CommentProcessingInstruction |
忽略處理指令(PI)或註解,閱讀緊接在 PI 或註解後的串接文字內容。 | 移動到下一個起始元素或結束元素標籤。 實體參考會自動展開。 |
EndElement |
空字串。 | 讀者仍停留在當前位置。 |
ElementXmlDeclarationNoneDocumentDocumentTypeNotationEntityDocumentFragment |
擲回 。InvalidOperationException | 未定義,但通常讀者仍停留在當前位置。 |
欲了解更多資訊,請參閱參考文獻頁面的 XmlReader 備註區及 W3C XML 架構第二部分:資料型別 建議。
關於此方法的非同步版本,請參見 ReadContentAsAsync。