XmlReader.ReadElementContentAsObject 方法

定義

Object 的形式,讀取目前項目並傳回內容。

多載

ReadElementContentAsObject()

Object 的形式,讀取目前項目並傳回內容。

ReadElementContentAsObject(String, String)

檢查指定的區域名稱和命名空間 URI 是否與目前的項目相符,然後以 Object 的形式,讀取目前的項目並傳回內容。

ReadElementContentAsObject()

Object 的形式,讀取目前項目並傳回內容。

public:
 virtual System::Object ^ ReadElementContentAsObject();
public virtual object ReadElementContentAsObject ();
abstract member ReadElementContentAsObject : unit -> obj
override this.ReadElementContentAsObject : unit -> obj
Public Overridable Function ReadElementContentAsObject () As Object

傳回

Object

最合適類型的 Boxed Common Language Runtime (CLR) 物件。 ValueType 屬性會判斷適當的 CLR 類型。 如果內容的類型是清單類型,則這個方法會傳回適當類型之 Boxed 物件的陣列。

例外狀況

XmlReader 並不是放置在項目上。

-或-

在先前的非同步作業完成前呼叫了 XmlReader 方法。 在此情況下,會擲回 InvalidOperationException 與「非同步作業已經在進行中」的訊息。

目前的項目包含子項目。

-或-

項目內容無法轉換成要求的類型

方法是以 null 引數呼叫。

範例

下列範例會使用 方法來讀取節點的內容 price 。 讀取器會使用架構中的資訊,將內容對應至正確的資料類型。

// Create a validating reader.
XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.Schema;
settings.Schemas.Add("urn:items", "item.xsd");	
 XmlReader reader = XmlReader.Create("item.xml", settings);

// Get the CLR type of the price element.
reader.ReadToFollowing("price");
Console.WriteLine(reader.ValueType);

// Return the value of the price element as Decimal object.
Decimal price = (Decimal) reader.ReadElementContentAsObject();

// Add 2.50 to the price.
price = Decimal.Add(price, 2.50m);
' Create a validating reader.
Dim settings As New XmlReaderSettings()
settings.ValidationType = ValidationType.Schema
settings.Schemas.Add("urn:items", "item.xsd")
Dim reader As XmlReader = XmlReader.Create("item.xml", settings)
      
' Get the CLR type of the price element. 
reader.ReadToFollowing("price")
Console.WriteLine(reader.ValueType)
      
' Return the value of the price element as Decimal object.
Dim price As [Decimal] = CType(reader.ReadElementContentAsObject(), [Decimal])
      
' Add 2.50 to the price.
price = [Decimal].Add(price, 2.5D)

此範例使用下列兩個檔案作為輸入。

item.xml

<item xmlns="urn:items" productID='123098'>
 <name>hammer</name>
 <price>9.95</price>
 <supplierID>1929</supplierID>
</item>

item.xsd

<?xml version="1.0"?>
<xs:schema xmlns:tns="urn:items" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="urn:items" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="item">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="name" type="xs:string" />
        <xs:element name="price" type="xs:decimal" />
        <xs:element name="supplierID" type="xs:unsignedShort" />
      </xs:sequence>
      <xs:attribute name="productID" type="xs:unsignedInt" use="required" />
    </xs:complexType>
  </xs:element>
</xs:schema>

備註

這個方法會讀取開始標籤、元素的內容,並將讀取器移至結束元素標籤的後面。 它會展開實體,並忽略處理指示和批註。 元素只能包含簡單內容。 也就是說,它不能有子專案。

如需詳細資訊,請參閱參考頁面的 XmlReader 一節和 W3C XML 架構第 2 部分:資料類型 建議。

如需這個方法的非同步版本,請參閱 ReadElementContentAsObjectAsync

適用於

ReadElementContentAsObject(String, String)

檢查指定的區域名稱和命名空間 URI 是否與目前的項目相符,然後以 Object 的形式,讀取目前的項目並傳回內容。

public:
 virtual System::Object ^ ReadElementContentAsObject(System::String ^ localName, System::String ^ namespaceURI);
public virtual object ReadElementContentAsObject (string localName, string namespaceURI);
abstract member ReadElementContentAsObject : string * string -> obj
override this.ReadElementContentAsObject : string * string -> obj
Public Overridable Function ReadElementContentAsObject (localName As String, namespaceURI As String) As Object

參數

localName
String

項目的本機名稱。

namespaceURI
String

項目的命名空間 URI。

傳回

Object

最合適類型的 Boxed Common Language Runtime (CLR) 物件。 ValueType 屬性會判斷適當的 CLR 類型。 如果內容的類型是清單類型,則這個方法會傳回適當類型之 Boxed 物件的陣列。

例外狀況

XmlReader 並不是放置在項目上。

-或-

在先前的非同步作業完成前呼叫了 XmlReader 方法。 在此情況下,會擲回 InvalidOperationException 與「非同步作業已經在進行中」的訊息。

目前的項目包含子項目。

-或-

項目內容無法轉換成要求的類型。

方法是以 null 引數呼叫。

指定的區域名稱和命名空間 URI,與目前正在讀取的項目不相符。

備註

這個方法會讀取開始標籤、元素的內容,並將讀取器移至結束元素標籤的後面。 它會展開實體,並忽略處理指示和批註。 元素只能包含簡單內容。 也就是說,它不能有子專案。

如需詳細資訊,請參閱參考頁面的 XmlReader 一節和 W3C XML 架構第 2 部分:資料類型 建議。

適用於