XmlReader.ReadContentAs(Type, IXmlNamespaceResolver) Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
İç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
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. .