Freigeben über


XmlReader.ReadContentAs(Type, IXmlNamespaceResolver) Methode

Definition

Liest den Inhalt als Objekt vom angegebenen Typ.

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

Parameter

returnType
Type

Der Typ des zurückzugebenden Werts.

Hinweis Seit der Veröffentlichung von .NET Framework 3.5 kann der Wert des returnType-Parameters nun auch auf den DateTimeOffset-Typ festgelegt werden.

namespaceResolver
IXmlNamespaceResolver

Ein IXmlNamespaceResolver-Objekt, das für die Auflösung von Präfixen von Namespaces verwendet wird, die im Zusammenhang mit der Typkonvertierung stehen. Dieses kann zum Beispiel beim Konvertieren eines XmlQualifiedName-Objekts in einen xs:string verwendet werden.

Dieser Wert kann null sein.

Gibt zurück

Object

Der verkettete Textinhalt oder Attributwert, der in den angeforderten Typ konvertiert wurde.

Ausnahmen

Der Inhalt weist nicht das richtige Format für den Zieltyp auf.

Die versuchte Typumwandlung ist ungültig.

Der returnType-Wert ist null.

Der aktuelle Knoten ist kein unterstützter Knotentyp. Weitere Informationen finden Sie in der nachfolgenden Tabelle.

- oder -

Eine XmlReader-Methode wurde aufgerufen, bevor ein vorheriger asynchroner Vorgang abgeschlossen wurde. In diesem Fall wird InvalidOperationException mit der Meldung „Es wird bereits ein asynchroner Vorgang ausgeführt“ ausgelöst.

Lesen von Decimal.MaxValue.

Beispiele

Im folgenden Beispiel wird die ReadContentAs Methode verwendet, um den Inhalt des Colors-Elements in ein Array von Zeichenfolgenobjekten zurückzugeben.

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

In diesem Beispiel wird die Datei dataFile_2.xml als Eingabe verwendet.

<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>

Hinweise

Diese Methode liest den Textinhalt an der aktuellen Leseposition und konvertiert ihn in den angeforderten Rückgabetyp. Text, Leerraum, signifikanter Leerraum und CDATA-Abschnitte sind verkettet. Kommentare und Verarbeitungsanweisungen werden übersprungen und Entitätsverweise automatisch aufgelöst.

Diese Methode wird verwendet, um bei Bedarf atomwertelemente aus dem aktuellen Knoteninhalt zu lesen, zu konvertieren und zurückzugeben. Wenn der Eingabetyp eine gültige Zuordnung für den Typ des aktuellen Knotens ist, wird eine Instanz des Zieltyps zurückgegeben, der den Wert des aktuellen Knotens enthält. Weitere Informationen finden Sie im Abschnitt "Hinweise" auf der XmlReader Referenzseite für eine Liste der Standardzuordnungen.

Wenn Sie beispielsweise den folgenden XML-Text hatten:

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

Wenn die Daten eingegeben werden und ein Zeichenfolgenarray dem ReadContentAs Methodenaufruf bereitgestellt wird, werden die ganzzahligen Werte gemäß der Liste der gültigen CLR-Typzuordnungen aus Zeichenfolgen konvertiert.

Wenn die Daten nicht typiert sind und ein Zeichenfolgenarray dem ReadContentAs Methodenaufruf bereitgestellt wird, wird der Inhalt in separate Zeichenfolgen analysiert. Ein Array mit zwei Zeichenfolgen wird mit den Werten "123" und "456" zurückgegeben. Die Leerzeichen werden nicht vom Inhalt erhalten.

Im Allgemeinen beim Lesen von untypierten Daten wird der Inhalt entsprechend dem angegebenen Typ analysiert. Wenn beispielsweise ein ganzzahliges Array für den ReadContentAs Methodenaufruf bereitgestellt wird, wird die Zeichenfolge in ein Array mit ganzzahligen Zahlen {123,456}analysiert.

Im folgenden Beispiel wird der XML-Text nicht durch Leerzeichen getrennt.

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

Wenn der Inhalt nicht eingegeben wird und ein Zeichenfolgenarray an den ReadContentAs Methodenaufruf übergeben wird, wird ein Array mit einer verketteten Zeichenfolge mit dem Wert "123456789" zurückgegeben.

In der folgenden Tabelle wird beschrieben, wie diese Methode jeden Knotentyp behandelt.

XmlNodeType Rückgabewert Verhalten des Readers
Text

CDATA

Whitespace

SignificantWhitespace

EntityReference

EndEntity
Verketteter Inhalt von Text, CDATA, Leerraum und signifikantem Leerraumknoten, konvertiert in den angeforderten Typ. Wird zum nächsten Anfangselement- oder Endelementtag verschoben. Entitätsverweise werden automatisch erweitert.
Attribute Identisch mit dem Aufrufen XmlConvert.ToXxx des Attributwerts. Der Reader behält die aktuelle Position bei.
Comment

ProcessingInstruction
Ignoriert die Verarbeitungsanweisung oder den Kommentar und liest den verketteten Textinhalt, der auf die Verarbeitungsanweisung oder den Kommentar folgt. Wird zum nächsten Anfangselement- oder Endelementtag verschoben. Entitätsverweise werden automatisch erweitert.
EndElement Eine leere Zeichenfolge. Der Reader behält die aktuelle Position bei.
Element

XmlDeclaration

None

Document

DocumentType

Notation

Entity

DocumentFragment
Es wird eine InvalidOperationException ausgelöst. Nicht definiert, der Reader behält jedoch i. d. R. die aktuelle Position bei.

Weitere Informationen finden Sie im Abschnitt "Hinweise" der XmlReader Referenzseite und im W3C-XML-Schemateil 2: Empfehlung für Datentypen .

Die asynchrone Version dieser Methode finden Sie unter ReadContentAsAsync.

Gilt für