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, parametresinin returnType değeri artık türü olabilir DateTimeOffset .
- 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öğesine 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.
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.
öğesini 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, girdi 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, geçerli okuyucu konumundaki metin içeriğini 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, gerekirse okumak, dönüştürmek ve geçerli düğüm içeriğinden atomik değer öğeleri 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ılırsa ve yöntem çağrısına ReadContentAs bir dize dizisi sağlanırsa, 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ırsa, 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ğlanırsa, "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üne nasıl davrandığı açıklanmaktadır.
| Xmlnodetype | Dönüş değeri | Okuyucu davranışı |
|---|---|---|
TextCDATAWhitespaceSignificantWhitespaceEntityReferenceEndEntity |
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ğerinde çağrılmasıyla XmlConvert.ToXxx aynıdır. |
Okuyucu geçerli konumda kalır. |
CommentProcessingInstruction |
İş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. |
ElementXmlDeclarationNoneDocumentDocumentTypeNotationEntityDocumentFragment |
bir InvalidOperationException atılır. | Tanımlanmamış olsa da, okuyucu genellikle 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. .