XmlReader.ReadContentAs(Type, IXmlNamespaceResolver) Yöntem

Tanım

İçeriği belirtilen türde bir nesne olarak okur.

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

Parametreler

returnType
Type

Döndürülecek değerin türü.

Not .NET Framework 3.5 sürümüyle, parametrenin returnType değeri artık türü olabilirDateTimeOffset.

namespaceResolver
IXmlNamespaceResolver

IXmlNamespaceResolver Tür dönüştürmeyle ilgili ad alanı ön eklerini çözümlemek için kullanılan nesne. Örneğin, bir XmlQualifiedName nesneyi xs:string'e dönüştürürken bu kullanılabilir.

Bu değer olabilir null.

Döndürülenler

Object

Birleştirilmiş metin içeriği veya öznitelik değeri istenen türe dönüştürülür.

Özel durumlar

İçerik, hedef türü için doğru biçimde değil.

Denenen atama geçerli değil.

returnType değeri null olur.

Geçerli düğüm desteklenen bir düğüm türü değil. Ayrıntılar için aşağıdaki tabloya bakın.

-veya-

Önceki XmlReader bir zaman uyumsuz işlem tamamlanmadan önce bir yöntem çağrıldı. Bu durumda, InvalidOperationException "Zaman uyumsuz bir işlem zaten devam ediyor" iletisiyle oluşturulur.

okuyun Decimal.MaxValue.

Örnekler

Aşağıdaki örnek, colors öğesinin ReadContentAs içeriğini dize nesneleri dizisine döndürmek için yöntemini kullanır.

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

Örnek, giriş olarak dosyasını kullanır 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>

Açıklamalar

Bu yöntem metin içeriğini geçerli okuyucu konumunda okur ve istenen dönüş türüne dönüştürür. Metin, boşluk, önemli boşluk ve CDATA bölümleri birleştirilir. Açıklamalar ve işleme yönergeleri atlanır ve varlık başvuruları otomatik olarak çözümlenir.

Bu yöntem, geçerli düğüm içeriğinden atomik değer öğelerini okumak, gerekirse dönüştürmek ve döndürmek için kullanılır. Giriş türü geçerli düğümün türü için geçerli bir eşlemeyse, geçerli düğümün değerini içeren hedef türün bir örneği döndürülür. Varsayılan eşlemelerin listesi için başvuru sayfasındaki Açıklamalar bölümüne XmlReader bakın.

Örneğin, aşağıdaki XML metnine sahipseniz:

<elem>123 <!-- comment --> <?pi my_text?> 456 <?pi another_pi?></elem>

Veriler yazıldıysa ve yöntem çağrısına ReadContentAs bir dize dizisi sağlandıysa, tamsayı değerleri geçerli CLR türü eşlemeleri listesine göre dizelerden dönüştürülür.

Veriler yazılmamışsa ve yöntem çağrısına ReadContentAs bir dize dizisi sağlanıyorsa, içerik ayrı dizeler halinde ayrıştırılır. "123" ve "456" değerleriyle iki dize içeren bir dizi döndürülür. Boşluklar içerikten korunmaz.

Genel olarak, yazılmamış veriler okunurken içerik sağlanan türe göre ayrıştırılır. Örneğin, yöntem çağrısına ReadContentAs bir tamsayı dizisi sağlanırsa, dize bir tamsayı dizisine {123,456}ayrıştırılır.

Aşağıdaki örnekte XML metni boşluklarla ayrılmamış

<elem>123<!-- comment --><?pi my_text?>456789<?pi another_pi?></elem>

İçerik yazılmamışsa ve yöntem çağrısına ReadContentAs bir dize dizisi sağlanmışsa, "123456789" değeriyle birleştirilmiş bir dize içeren bir dizi döndürülür.

Aşağıdaki tabloda bu yöntemin her düğüm türünü nasıl eledığı açıklanmaktadır.

Xmlnodetype Döndürülen değer Okuyucu davranışı
Text

CDATA

Whitespace

SignificantWhitespace

EntityReference

EndEntity
Metin, CDATA, boşluk ve önemli boşluk düğümlerinin birleştirilmiş içeriği istenen türe dönüştürülür. Sonraki başlangıç öğesine veya bitiş öğesi etiketine geçer. Varlık başvuruları otomatik olarak genişletilir.
Attribute Öznitelik değerini çağırmakla XmlConvert.ToXxx aynı. Okuyucu geçerli konumda kalır.
Comment

ProcessingInstruction
İşleme yönergesini (PI) veya açıklamayı yoksayar ve PI veya açıklamayı izleyen birleştirilmiş metin içeriğini okur. Sonraki başlangıç öğesine veya bitiş öğesi etiketine geçer. Varlık başvuruları otomatik olarak genişletilir.
EndElement Boş bir dize. Okuyucu geçerli konumda kalır.
Element

XmlDeclaration

None

Document

DocumentType

Notation

Entity

DocumentFragment
bir InvalidOperationException atılır. Tanımsız, ancak genellikle okuyucu geçerli konumda kalır.

Daha fazla bilgi için başvuru sayfasının Açıklamalar bölümüne XmlReader ve W3C XML Şema Bölüm 2: Veri türleri önerisine bakın.

Bu yöntemin zaman uyumsuz sürümü için bkz ReadContentAsAsync. .

Şunlara uygulanır