Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

XmlReader-Klasse

 

Veröffentlicht: Oktober 2016

Stellt einen Reader dar, der einen schnellen Zugriff auf XML-Daten bietet, ohne Zwischenspeicher und welcher nur vorwärts möglich ist.

Um den .NET Framework-Quellcode für diesen Typ zu durchsuchen, finden Sie unter der Reference Source.

Namespace:   System.Xml
Assembly:  System.Xml (in System.Xml.dll)


public abstract class XmlReader : IDisposable

NameBeschreibung
System_CAPS_protmethodXmlReader()

Initialisiert eine neue Instanz der XmlReader-Klasse.

NameBeschreibung
System_CAPS_pubpropertyAttributeCount

Ruft beim Überschreiben in einer abgeleiteten Klasse die Anzahl der Attribute für den aktuellen Knoten ab.

System_CAPS_pubpropertyBaseURI

Ruft beim Überschreiben in einer abgeleiteten Klasse den Basis-URI des aktuellen Knotens ab.

System_CAPS_pubpropertyCanReadBinaryContent

Ruft einen Wert ab, der angibt, ob der XmlReader die Methoden für das Lesen von Inhalt im Binärformat implementiert.

System_CAPS_pubpropertyCanReadValueChunk

Ruft einen Wert ab, der angibt, ob der XmlReader die angegebene ReadValueChunk-Methode implementiert.

System_CAPS_pubpropertyCanResolveEntity

Ruft einen Wert ab, der angibt, ob dieser Reader Entitäten analysieren und auflösen kann.

System_CAPS_pubpropertyDepth

Ruft beim Überschreiben in einer abgeleiteten Klasse die Tiefe des aktuellen Knotens im XML-Dokument ab.

System_CAPS_pubpropertyEOF

Ruft beim Überschreiben in einer abgeleiteten Klasse einen Wert ab, der angibt, ob sich der Reader am Ende des Streams befindet.

System_CAPS_pubpropertyHasAttributes

Ruft einen Wert ab, der angibt, ob der aktuelle Knoten über Attribute verfügt.

System_CAPS_pubpropertyHasValue

Ruft beim Überschreiben in einer abgeleiteten Klasse einen Wert ab, der angibt, ob der aktuelle Knoten einen Value aufweisen kann.

System_CAPS_pubpropertyIsDefault

Ruft beim Überschreiben in einer abgeleiteten Klasse einen Wert ab, der angibt, ob der aktuelle Knoten ein Attribut ist, das aus dem in der DTD oder dem Schema definierten Standardwert generiert wurde.

System_CAPS_pubpropertyIsEmptyElement

Ruft beim Überschreiben in einer abgeleiteten Klasse einen Wert ab, der angibt, ob der aktuelle Knoten ein leeres Element ist (z. B. <MyElement/>).

System_CAPS_pubpropertyItem[Int32]

Ruft beim Überschreiben in einer abgeleiteten Klasse den Wert des Attributs mit dem angegebenen Index ab.

System_CAPS_pubpropertyItem[String]

Ruft beim Überschreiben in einer abgeleiteten Klasse den Wert des Attributs mit dem angegebenen Name ab.

System_CAPS_pubpropertyItem[String, String]

Ruft beim Überschreiben in einer abgeleiteten Klasse den Wert des Attributs mit dem angegebenen LocalName und NamespaceURI ab.

System_CAPS_pubpropertyLocalName

Ruft beim Überschreiben in einer abgeleiteten Klasse den lokalen Namen des aktuellen Knotens ab.

System_CAPS_pubpropertyName

Ruft beim Überschreiben in einer abgeleiteten Klasse den qualifizierten Namen des aktuellen Knotens ab.

System_CAPS_pubpropertyNamespaceURI

Ruft beim Überschreiben in einer abgeleiteten Klasse den Namespace-URI (entsprechend der Definition in der Namespacespezifikation des W3C) des Knotens ab, auf dem der Reader positioniert ist.

System_CAPS_pubpropertyNameTable

Ruft beim Überschreiben in einer abgeleiteten Klasse die XmlNameTable ab, die dieser Implementierung zugeordnet ist.

System_CAPS_pubpropertyNodeType

Ruft beim Überschreiben in einer abgeleiteten Klasse den Typ des aktuellen Knotens ab.

System_CAPS_pubpropertyPrefix

Ruft beim Überschreiben in einer abgeleiteten Klasse das dem aktuellen Knoten zugeordnete Namespacepräfix ab.

System_CAPS_pubpropertyQuoteChar

Ruft beim Überschreiben in einer abgeleiteten Klasse das Anführungszeichen ab, mit dem der Wert eines Attributknotens eingeschlossen wird.

System_CAPS_pubpropertyReadState

Ruft beim Überschreiben in einer abgeleiteten Klasse den Zustand des Readers ab.

System_CAPS_pubpropertySchemaInfo

Ruft die Schemainformationen ab, die dem aktuellen Knoten nach der Schemavalidierung zugewiesen wurden.

System_CAPS_pubpropertySettings

Ruft das zum Erstellen dieser XmlReaderSettings-Instanz verwendete XmlReader-Objekt ab.

System_CAPS_pubpropertyValue

Ruft beim Überschreiben in einer abgeleiteten Klasse den Textwert des aktuellen Knotens ab.

System_CAPS_pubpropertyValueType

Ruft den CLR-Typ (Common Language Runtime) für den aktuellen Knoten ab.

System_CAPS_pubpropertyXmlLang

Ruft beim Überschreiben in einer abgeleiteten Klasse den aktuellen xml:lang-Bereich ab.

System_CAPS_pubpropertyXmlSpace

Ruft beim Überschreiben in einer abgeleiteten Klasse den aktuellen xml:space-Bereich ab.

NameBeschreibung
System_CAPS_pubmethodClose()

Ändert beim Überschreiben in einer abgeleiteten Klassen den ReadState in Closed.

System_CAPS_pubmethodSystem_CAPS_staticCreate(Stream)

Erstellt mit dem angegebenen Stream mit den Standardeinstellungen eine neue XmlReader-Instanz.

System_CAPS_pubmethodSystem_CAPS_staticCreate(Stream, XmlReaderSettings)

Erstellt eine neue XmlReader-Instanz mit dem angegebenen Stream und den angegebenen Einstellungen.

System_CAPS_pubmethodSystem_CAPS_staticCreate(Stream, XmlReaderSettings, String)

Erstellt mit dem angegebenen Stream, dem Basis-URI und den Einstellungen eine neue XmlReader-Instanz.

System_CAPS_pubmethodSystem_CAPS_staticCreate(Stream, XmlReaderSettings, XmlParserContext)

Erstellt mit dem angegebenen Stream, den Einstellungen und den Kontextinformationen für Analysezwecke eine neue XmlReader-Instanz.

System_CAPS_pubmethodSystem_CAPS_staticCreate(String)

Erstellt eine neue XmlReader-Instanz mit angegebenem URI.

System_CAPS_pubmethodSystem_CAPS_staticCreate(String, XmlReaderSettings)

Erstellt mit dem angegebenen URI und den angegebenen Einstellungen eine neue XmlReader-Instanz.

System_CAPS_pubmethodSystem_CAPS_staticCreate(String, XmlReaderSettings, XmlParserContext)

Erstellt mit dem angegebenen URI, den Einstellungen und den Kontextinformationen für Analysezwecke eine neue XmlReader-Instanz.

System_CAPS_pubmethodSystem_CAPS_staticCreate(TextReader)

Erstellt mit dem angegebenen Text-Reader eine neue XmlReader-Instanz.

System_CAPS_pubmethodSystem_CAPS_staticCreate(TextReader, XmlReaderSettings)

Erstellt mit dem angegebenen Text-Reader und den angegebenen Einstellungen eine neue XmlReader-Instanz.

System_CAPS_pubmethodSystem_CAPS_staticCreate(TextReader, XmlReaderSettings, String)

Erstellt mit dem angegebenen Text-Reader, den angegebenen Einstellungen und dem angegebenen Basis-URI eine neue XmlReader-Instanz.

System_CAPS_pubmethodSystem_CAPS_staticCreate(TextReader, XmlReaderSettings, XmlParserContext)

Erstellt mit dem angegebenen Text-Reader, den Einstellungen und den Kontextinformationen für Analysezwecke eine neue XmlReader-Instanz.

System_CAPS_pubmethodSystem_CAPS_staticCreate(XmlReader, XmlReaderSettings)

Erstellt mit dem angegebenen XML-Reader und den angegebenen Einstellungen eine neue XmlReader-Instanz.

System_CAPS_pubmethodDispose()

Gibt alle von der aktuellen Instanz der XmlReader-Klasse verwendeten Ressourcen frei.

System_CAPS_protmethodDispose(Boolean)

Gibt die von XmlReader verwendeten nicht verwalteten Ressourcen und optional die verwalteten Ressourcen frei.

System_CAPS_pubmethodEquals(Object)

Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist.(Geerbt von „Object“.)

System_CAPS_protmethodFinalize()

Gibt einem Objekt Gelegenheit, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der Garbage Collection freigegeben wird. (Geerbt von „Object“.)

System_CAPS_pubmethodGetAttribute(Int32)

Ruft beim Überschreiben in einer abgeleiteten Klasse den Wert des Attributs mit dem angegebenen Index ab.

System_CAPS_pubmethodGetAttribute(String)

Ruft beim Überschreiben in einer abgeleiteten Klasse den Wert des Attributs mit dem angegebenen Name ab.

System_CAPS_pubmethodGetAttribute(String, String)

Ruft beim Überschreiben in einer abgeleiteten Klasse den Wert des Attributs mit dem angegebenen LocalName und NamespaceURI ab.

System_CAPS_pubmethodGetHashCode()

Fungiert als die Standardhashfunktion.(Geerbt von „Object“.)

System_CAPS_pubmethodGetType()

Ruft den Type der aktuellen Instanz ab.(Geerbt von „Object“.)

System_CAPS_pubmethodGetValueAsync()

Ruft den Wert des aktuellen Knotens asynchron ab.

System_CAPS_pubmethodSystem_CAPS_staticIsName(String)

Gibt einen Wert zurück, der angibt, ob das Zeichenfolgenargument ein gültiger XML-Name ist.

System_CAPS_pubmethodSystem_CAPS_staticIsNameToken(String)

Gibt einen Wert zurück, der angibt, ob das Zeichenfolgenargument ein gültiges XML-Namenstoken ist.

System_CAPS_pubmethodIsStartElement()

Ruft MoveToContent auf und überprüft, ob der aktuelle Inhaltsknoten ein Starttag oder ein leeres Elementtag ist.

System_CAPS_pubmethodIsStartElement(String)

Ruft MoveToContent auf und überprüft, ob der aktuelle Inhaltsknoten ein Starttag oder ein leeres Elementtag ist und die Name-Eigenschaft des gefundenen Elements mit dem angegebenen Argument übereinstimmt.

System_CAPS_pubmethodIsStartElement(String, String)

Ruft MoveToContent auf und überprüft, ob der aktuelle Inhaltsknoten ein Starttag oder ein leeres Elementtag ist und ob die LocalName-Eigenschaft und die NamespaceURI-Eigenschaft des gefundenen Elements mit den angegebenen Zeichenfolgen übereinstimmen.

System_CAPS_pubmethodLookupNamespace(String)

Löst beim Überschreiben in einer abgeleiteten Klasse ein Namespacepräfix im Gültigkeitsbereich des aktuellen Elements auf.

System_CAPS_protmethodMemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.(Geerbt von „Object“.)

System_CAPS_pubmethodMoveToAttribute(Int32)

Wechselt beim Überschreiben in einer abgeleiteten Klasse zum Attribut mit dem angegebenen Index.

System_CAPS_pubmethodMoveToAttribute(String)

Wechselt beim Überschreiben in einer abgeleiteten Klasse zum Attribut mit dem angegebenen Name.

System_CAPS_pubmethodMoveToAttribute(String, String)

Wechselt beim Überschreiben in einer abgeleiteten Klasse zum Attribut mit dem angegebenen LocalName und dem angegebenen NamespaceURI.

System_CAPS_pubmethodMoveToContent()

Überprüft, ob der aktuelle Knoten ein Inhaltsknoten (Textknoten ohne Leerraum, CDATA-, Element-, EndElement-, EntityReference- oder EndEntity-Knoten) ist. Wenn der Knoten kein Inhaltsknoten ist, springt der Reader zum nächsten Inhaltsknoten oder an das Ende der Datei. Knoten folgender Typen werden übersprungen: ProcessingInstruction, DocumentType, Comment, Whitespace und SignificantWhitespace.

System_CAPS_pubmethodMoveToContentAsync()

Asynchrone Überprüfungen, ob der aktuelle Knoten ein Inhaltsknoten ist. Wenn der Knoten kein Inhaltsknoten ist, springt der Reader zum nächsten Inhaltsknoten oder an das Ende der Datei.

System_CAPS_pubmethodMoveToElement()

Wechselt beim Überschreiben in einer abgeleiteten Klasse zu dem Element, das den aktuellen Attributknoten enthält.

System_CAPS_pubmethodMoveToFirstAttribute()

Wechselt beim Überschreiben in einer abgeleiteten Klasse zum ersten Attribut.

System_CAPS_pubmethodMoveToNextAttribute()

Wechselt beim Überschreiben in einer abgeleiteten Klasse zum nächsten Attribut.

System_CAPS_pubmethodRead()

Liest beim Überschreiben in einer abgeleiteten Klasse den nächsten Knoten aus dem Stream.

System_CAPS_pubmethodReadAsync()

Liest den nächsten Knoten aus dem Stream asynchron.

System_CAPS_pubmethodReadAttributeValue()

Löst beim Überschreiben in einer abgeleiteten Klasse den Attributwert in einen oder mehrere Knoten vom Typ Text, EntityReference oder EndEntity auf.

System_CAPS_pubmethodReadContentAs(Type, IXmlNamespaceResolver)

Liest den Inhalt als Objekt vom angegebenen Typ.

System_CAPS_pubmethodReadContentAsAsync(Type, IXmlNamespaceResolver)

Liest den Inhalt asynchron als Objekt vom angegebenen Typ.

System_CAPS_pubmethodReadContentAsBase64(Byte[], Int32, Int32)

Liest den Inhalt und gibt die Base64-decodierten binären Bytes zurück.

System_CAPS_pubmethodReadContentAsBase64Async(Byte[], Int32, Int32)

Liest den Inhalt asynchron und gibt die Base64-decodierten binären Bytes zurück.

System_CAPS_pubmethodReadContentAsBinHex(Byte[], Int32, Int32)

Liest den Inhalt und gibt die BinHex-decodierten binären Bytes zurück.

System_CAPS_pubmethodReadContentAsBinHexAsync(Byte[], Int32, Int32)

Liest den Inhalt asynchron und gibt die BinHex-decodierten binären Bytes zurück.

System_CAPS_pubmethodReadContentAsBoolean()

Liest den Textinhalt an der aktuellen Position als Boolean.

System_CAPS_pubmethodReadContentAsDateTime()

Liest den Textinhalt an der aktuellen Position als DateTime-Objekt.

System_CAPS_pubmethodReadContentAsDateTimeOffset()

Liest den Textinhalt an der aktuellen Position als DateTimeOffset-Objekt.

System_CAPS_pubmethodReadContentAsDecimal()

Liest den Textinhalt an der aktuellen Position als Decimal-Objekt.

System_CAPS_pubmethodReadContentAsDouble()

Liest den Textinhalt an der aktuellen Position als Gleitkommazahl mit doppelter Genauigkeit.

System_CAPS_pubmethodReadContentAsFloat()

Liest den Textinhalt an der aktuellen Position als Gleitkommazahl mit einfacher Genauigkeit.

System_CAPS_pubmethodReadContentAsInt()

Liest den Textinhalt an der aktuellen Position als 32-Bit-Ganzzahl mit Vorzeichen.

System_CAPS_pubmethodReadContentAsLong()

Liest den Textinhalt an der aktuellen Position als 64-Bit-Ganzzahl mit Vorzeichen.

System_CAPS_pubmethodReadContentAsObject()

Liest den Textinhalt an der aktuellen Position als Object.

System_CAPS_pubmethodReadContentAsObjectAsync()

Liest den Textinhalt an der aktuellen Position asynchron als Object.

System_CAPS_pubmethodReadContentAsString()

Liest den Textinhalt an der aktuellen Position als String-Objekt.

System_CAPS_pubmethodReadContentAsStringAsync()

Liest den Textinhalt an der aktuellen Position asynchron als String-Objekt.

System_CAPS_pubmethodReadElementContentAs(Type, IXmlNamespaceResolver)

Liest den Elementinhalt als angeforderten Typ.

System_CAPS_pubmethodReadElementContentAs(Type, IXmlNamespaceResolver, String, String)

Überprüft, ob der angegebene lokale Name und der angegebene Namespace-URI mit denen des aktuellen Elements übereinstimmen, und liest dann den Elementinhalt als angeforderten Typ.

System_CAPS_pubmethodReadElementContentAsAsync(Type, IXmlNamespaceResolver)

Liest den Elementinhalt asynchron als angeforderten Typ.

System_CAPS_pubmethodReadElementContentAsBase64(Byte[], Int32, Int32)

Liest das Element und decodiert den Base64-Inhalt.

System_CAPS_pubmethodReadElementContentAsBase64Async(Byte[], Int32, Int32)

Liest das Element asynchron und decodiert den Base64-Inhalt.

System_CAPS_pubmethodReadElementContentAsBinHex(Byte[], Int32, Int32)

Liest das Element und decodiert den BinHex-Inhalt.

System_CAPS_pubmethodReadElementContentAsBinHexAsync(Byte[], Int32, Int32)

Liest das Element asynchron und decodiert den BinHex-Inhalt.

System_CAPS_pubmethodReadElementContentAsBoolean()

Liest das aktuelle Element und gibt den Inhalt als Boolean-Objekt zurück.

System_CAPS_pubmethodReadElementContentAsBoolean(String, String)

Überprüft, ob der angegebene lokale Name und der angegebene Namespace-URI mit denen des aktuellen Elements übereinstimmen, liest dann das aktuelle Element und gibt den Inhalt als Boolean-Objekt zurück.

System_CAPS_pubmethodReadElementContentAsDateTime()

Liest das aktuelle Element und gibt den Inhalt als DateTime-Objekt zurück.

System_CAPS_pubmethodReadElementContentAsDateTime(String, String)

Überprüft, ob der angegebene lokale Name und der angegebene Namespace-URI mit denen des aktuellen Elements übereinstimmen, liest dann das aktuelle Element und gibt den Inhalt als DateTime-Objekt zurück.

System_CAPS_pubmethodReadElementContentAsDecimal()

Liest das aktuelle Element und gibt den Inhalt als Decimal-Objekt zurück.

System_CAPS_pubmethodReadElementContentAsDecimal(String, String)

Überprüft, ob der angegebene lokale Name und der angegebene Namespace-URI mit denen des aktuellen Elements übereinstimmen, liest dann das aktuelle Element und gibt den Inhalt als Decimal-Objekt zurück.

System_CAPS_pubmethodReadElementContentAsDouble()

Liest das aktuelle Element und gibt den Inhalt als Gleitkommazahl mit doppelter Genauigkeit zurück.

System_CAPS_pubmethodReadElementContentAsDouble(String, String)

Überprüft, ob der angegebene lokale Name und der angegebene Namespace-URI mit denen des aktuellen Elements übereinstimmen, liest dann das aktuelle Element und gibt den Inhalt als Gleitkommazahl mit doppelter Genauigkeit zurück.

System_CAPS_pubmethodReadElementContentAsFloat()

Liest das aktuelle Element und gibt den Inhalt als Gleitkommazahl mit einfacher Genauigkeit zurück.

System_CAPS_pubmethodReadElementContentAsFloat(String, String)

Überprüft, ob der angegebene lokale Name und der angegebene Namespace-URI mit denen des aktuellen Elements übereinstimmen, liest dann das aktuelle Element und gibt den Inhalt als Gleitkommazahl mit einfacher Genauigkeit zurück.

System_CAPS_pubmethodReadElementContentAsInt()

Liest das aktuelle Element und gibt den Inhalt als 32-Bit-Ganzzahl mit Vorzeichen zurück.

System_CAPS_pubmethodReadElementContentAsInt(String, String)

Überprüft, ob der angegebene lokale Name und der angegebene Namespace-URI mit denen des aktuellen Elements übereinstimmen, liest dann das aktuelle Element und gibt den Inhalt als 32-Bit-Ganzzahl mit Vorzeichen zurück.

System_CAPS_pubmethodReadElementContentAsLong()

Liest das aktuelle Element und gibt den Inhalt als 64-Bit-Ganzzahl mit Vorzeichen zurück.

System_CAPS_pubmethodReadElementContentAsLong(String, String)

Überprüft, ob der angegebene lokale Name und der angegebene Namespace-URI mit denen des aktuellen Elements übereinstimmen, liest dann das aktuelle Element und gibt den Inhalt als 64-Bit-Ganzzahl mit Vorzeichen zurück.

System_CAPS_pubmethodReadElementContentAsObject()

Liest das aktuelle Element und gibt den Inhalt als Object zurück.

System_CAPS_pubmethodReadElementContentAsObject(String, String)

Überprüft, ob der angegebene lokale Name und der angegebene Namespace-URI mit denen des aktuellen Elements übereinstimmen, liest dann das aktuelle Element und gibt den Inhalt als Object zurück.

System_CAPS_pubmethodReadElementContentAsObjectAsync()

Liest das aktuelle Element asynchron und gibt den Inhalt als Object zurück.

System_CAPS_pubmethodReadElementContentAsString()

Liest das aktuelle Element und gibt den Inhalt als String-Objekt zurück.

System_CAPS_pubmethodReadElementContentAsString(String, String)

Überprüft, ob der angegebene lokale Name und der angegebene Namespace-URI mit denen des aktuellen Elements übereinstimmen, liest dann das aktuelle Element und gibt den Inhalt als String-Objekt zurück.

System_CAPS_pubmethodReadElementContentAsStringAsync()

Liest das aktuelle Element asynchron und gibt den Inhalt als String-Objekt zurück.

System_CAPS_pubmethodReadElementString()

Liest ein Nur-Text-Element. Sie sollten stattdessen allerdings die ReadElementContentAsString()-Methode verwenden, da sie eine einfachere Möglichkeit zum Verarbeiten dieses Vorgangs bereitstellt.

System_CAPS_pubmethodReadElementString(String)

Überprüft vor dem Lesen eines Nur-Text-Elements, ob die Name-Eigenschaft des gefundenen Elements mit der angegebenen Zeichenfolge übereinstimmt. Sie sollten stattdessen allerdings die ReadElementContentAsString()-Methode verwenden, da sie eine einfachere Möglichkeit zum Verarbeiten dieses Vorgangs bereitstellt.

System_CAPS_pubmethodReadElementString(String, String)

Überprüft vor dem Lesen eines Nur-Text-Elements, ob die LocalName- und die NamespaceURI-Eigenschaft des gefundenen Elements mit den angegebenen Zeichenfolgen übereinstimmen. Sie sollten stattdessen allerdings die ReadElementContentAsString(String, String)-Methode verwenden, da sie eine einfachere Möglichkeit zum Verarbeiten dieses Vorgangs bereitstellt.

System_CAPS_pubmethodReadEndElement()

Überprüft, ob der aktuelle Inhaltsknoten ein Endtag ist, und verschiebt den Reader auf den nächsten Knoten.

System_CAPS_pubmethodReadInnerXml()

Liest beim Überschreiben in einer abgeleiteten Klasse den gesamten Inhalt, einschließlich Markup, als Zeichenfolge.

System_CAPS_pubmethodReadInnerXmlAsync()

Liest asynchron den gesamten Inhalt, einschließlich Markup als Zeichenfolge.

System_CAPS_pubmethodReadOuterXml()

Liest beim Überschreiben in einer abgeleiteten Klasse den Inhalt (einschließlich Markup) ab, der diesen Knoten und alle untergeordneten Elemente darstellt.

System_CAPS_pubmethodReadOuterXmlAsync()

Liest den Inhalt, einschließlich Markup, das diesen Knoten und alle untergeordneten Elemente darstellt, asynchron.

System_CAPS_pubmethodReadStartElement()

Überprüft, ob der aktuelle Knoten ein Element ist, und rückt den Reader zum nächsten Knoten vor.

System_CAPS_pubmethodReadStartElement(String)

Überprüft, ob der aktuelle Inhaltsknoten ein Element mit dem angegebenen Name ist, und verschiebt den Reader auf den nächsten Knoten.

System_CAPS_pubmethodReadStartElement(String, String)

Überprüft, ob der aktuelle Inhaltsknoten ein Element mit dem angegebenen LocalName und dem angegebenen NamespaceURI ist, und verschiebt den Reader auf den nächsten Knoten.

System_CAPS_pubmethodReadString()

Liest beim Überschreiben in einer abgeleiteten Klasse den Inhalt eines Element- oder Textknotens als Zeichenfolge. Sie sollten stattdessen allerdings die ReadElementContentAsString-Methode verwenden, da sie eine einfachere Möglichkeit zum Verarbeiten dieses Vorgangs bereitstellt.

System_CAPS_pubmethodReadSubtree()

Gibt eine neue XmlReader-Instanz zurück, die zum Lesen des aktuellen Knotens und aller Nachfolgerknoten verwendet werden kann.

System_CAPS_pubmethodReadToDescendant(String)

Verschiebt den XmlReader auf das nächste Nachfolgerelement mit dem angegebenen qualifizierten Namen.

System_CAPS_pubmethodReadToDescendant(String, String)

Verschiebt den XmlReader auf das nächste Nachfolgerelement mit dem angegebenen lokalen Namen und dem angegebenen Namespace-URI.

System_CAPS_pubmethodReadToFollowing(String)

Liest, bis ein Element mit dem angegebenen qualifizierten Namen gefunden wird.

System_CAPS_pubmethodReadToFollowing(String, String)

Liest, bis ein Element mit dem angegebenen lokalen Namen und dem angegebenen Namespace-URI gefunden wird.

System_CAPS_pubmethodReadToNextSibling(String)

Verschiebt den XmlReader auf das nächste nebengeordnete Element mit dem angegebenen qualifizierten Namen.

System_CAPS_pubmethodReadToNextSibling(String, String)

Verschiebt den XmlReader auf das nächste nebengeordnete Element mit dem angegebenen lokalen Namen und dem angegebenen Namespace-URI.

System_CAPS_pubmethodReadValueChunk(Char[], Int32, Int32)

Liest umfangreiche Streams von Text, der in ein XML-Dokument eingebettet ist.

System_CAPS_pubmethodReadValueChunkAsync(Char[], Int32, Int32)

Liest asynchron umfangreiche Streams von Text, der in ein XML-Dokument eingebettet ist.

System_CAPS_pubmethodResolveEntity()

Löst beim Überschreiben in einer abgeleiteten Klasse den Entitätsverweis für EntityReference-Knoten auf.

System_CAPS_pubmethodSkip()

Überspringt die untergeordneten Elemente des aktuellen Knotens.

System_CAPS_pubmethodSkipAsync()

Überspringt die untergeordneten Elemente des aktuellen Knotens asynchron.

System_CAPS_pubmethodToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.(Geerbt von „Object“.)

System_CAPS_noteHinweis

Die .NET Framework-Quellcodes für diesen Typ finden Sie unter der Reference Source. Sie können den Quellcode online Durchsuchen, Referenz für die Offlineanzeige herunterladen und schrittweise durchlaufen (inklusive Patches und Updates) während des Debuggens; see instructions.

XmlReader bietet vorwärts gerichteten, schreibgeschützten Zugriff auf XML-Daten in eindokument oder den Stream. Diese Klasse entspricht den W3C Extensible Markup Language (XML) 1.0 (fourth edition) und Namespaces in XML 1.0 (third edition) Empfehlungen.

XmlReaderMethoden können Sie die XML-Daten durchlaufen und den Inhalt eines Knotens lesen. Die Eigenschaften der Klasse entsprechen den Wert des aktuellen Knotens ist, in dem der Reader positioniert ist. Die ReadState Eigenschaftswert gibt den aktuellen Status des XML-Readers. Beispielsweise die Eigenschaft festgelegt wird, um Initial durch die XmlReader.Read Methode und Closed durch die XmlReader.Close Methode. XmlReader bietet die datenkonformitätsüberprüfung und Validierung anhand einer DTD oder Schema.

XmlReaderverwendet ein Pull-Modell zum Abrufen von Daten. Dieses Modell:

  • Vereinfacht die Verwaltung durch einen natürlichen, Top-Down-Prozedur.

  • Unterstützt mehrere Eingabestreams und Ebenen.

  • Kann der Client dem Parser einen Puffer übergeben, in dem die Zeichenfolge direkt geschrieben, und vermeidet somit die Notwendigkeit einer zusätzlichen Zeichenfolge, die Kopie.

  • Unterstützt das selektive Verarbeitung. Der Client kann Elemente überspringen und verarbeiten, die für die Anwendung von Interesse sind. Sie können auch im Voraus zu verwalten, wie der XML-Stream ausgeführt werden soll (z. B. Normalisierung) Eigenschaften festlegen.

In diesem Abschnitt

Erstellen einen XML-reader
Validieren von XML-Daten
Datenkonformität
Navigieren durch die Knoten
Lesen der XML-Elemente
Lesen der XML-Attribute
Lesen der XML-Inhalt
Konvertieren CLR-Typen
Asynchrone Programmierung
Sicherheitsüberlegungen

Verwenden der Create Methode zum Erstellen einer XmlReaderInstanz.

Zwar .NET Framework konkrete Implementierungen der XmlReader Klasse, z. B. die XmlTextReader, XmlNodeReader, und die XmlValidatingReader Klassen, es wird empfohlen, die spezialisierten Klassen nur in folgenden Szenarien verwendet:

  • Zu Readan XML-DOM-Unterstruktur aus soll ein XmlNode Objekt, verwenden Sie die XmlNodeReader Klasse. (Jedoch nicht diese Klasse DTD oder Schema-Validierung unterstützen.)

  • Wenn Sie Entitäten auf Anforderung erweitern müssen, Sie nicht den Text Content normalisiert möchten oder sollen keine Standardattribute zurückgegeben wird, verwenden Sie die XmlTextReader Klasse.

Um den Satz von Funktionen anzugeben, auf den XML-Reader aktivieren, übergeben ein System.Xml.XmlReaderSettings -Objekt an die Create Methode. Können Sie ein einzelnes System.Xml.XmlReaderSettings Objekt, das um mehrere Reader mit denselben Funktionen zu erstellen, oder ändern Sie die System.Xml.XmlReaderSettings-Objekt, das einen neuen Reader mit einem anderen Satz von Funktionen zu erstellen. Sie können auch auf einfache Weise zu einem vorhandenen Reader Funktionen hinzufügen.

Wenn Sie verwenden einSystem.Xml.XmlReaderSettingsObjekt, werden Standardeinstellungen verwendet. Finden Sie unter der Create Referenzseite für Details.

XmlReader Löst ein XmlException auf XML-Analysefehler. Nachdem eine Ausnahme ausgelöst wird, ist der Zustand des Readers nicht vorhersagbar. Beispielsweise kann der angegebene Knotentyp sich von der tatsächlichen Knotentyp des aktuellen Knotens sein. Verwenden der ReadState -Eigenschaft überprüft, ob der Reader im Fehlerzustand befindet.

Um die Struktur ein XML-Dokument und dessen elementbeziehungen, Datentypen und inhaltseinschränkungen anzugeben, verwenden Sie eine DTD (Dokumenttypdefinition) oder das Schema für XML Schema Definition Language (XSD). Ein XML-Dokument wohlgeformt sein, wenn es alle syntaktischen Anforderungen entsprechend erfüllt gilt die W3C XML 1.0 Recommendation. Er ist gültig betrachtet, wenn es sowohl wohlgeformt ist, als auch die Einschränkungen der DTD oder dem Schema entspricht. (Siehe die W3C XML Schema Part 1: Structures und die W3C XML Schema Part 2: DatatypesRecommendations.) Das heißt, dass alle gültigen XML-Dokumente wohlgeformt sind, jedoch nicht alle wohlgeformten XML-Dokumente gültig sein müssen.

Können Sie überprüfen, die Daten anhand einer DTD, ein Inline-XSD-Schema oder ein XSD-Schema gespeichert, ein XmlSchemaSet Objekt (ein Cache); diese Szenarios werden beschrieben, auf die Create Referenzseite. XmlReader XML-Data Reduced (XDR)-Schema-Validation nicht unterstützt werden.

Verwenden Sie die folgenden Einstellungen auf der XmlReaderSettings Klasse, um welche Art der Validierung, geben Sie ggf. dieXmlReader Instanz unterstützt.

Verwenden Sie diese XmlReaderSettings Member

Angabe von

DtdProcessing Eigenschaft

Ob die DTD-Verarbeitung ermöglicht. In der Standardeinstellung ist die DTD-Verarbeitung nicht zulässig.

ValidationType-Eigenschaft

Gibt an, ob der Reader Daten überprüft werden sollen und welche Art der Validierung (DTD oder Schema) ausführen. In der Standardeinstellung erfolgt keine Validierung.

ValidationEventHandler-Ereignis

Ein Ereignishandler für den Empfang von Informationen über Validierungsereignisse. Wenn kein Ereignishandler bereitgestellt wird, wird beim ersten Validierungsfehler eine XmlException ausgelöst.

ValidationFlags-Eigenschaft

Zusätzlicher Validierung Optionen, über die XmlSchemaValidationFlags -Enumerationsmember:

  • AllowXmlAttributes– Lassen XML-Attribute (xml:*) in Instanzdokumenten auch, wenn sie nicht im Schema definiert sind. Die Attribute werden anhand ihres Datentyps validiert. Finden Sie unter der XmlSchemaValidationFlags Referenzseite für die Einstellung, die in bestimmten Szenarien zu verwenden. (Standardmäßig deaktiviert).

  • ProcessIdentityConstraints --Verarbeiten identitätseinschränkungen (xs:ID, xs:IDREF, xs:key, xs:keyref, xs:unique) während der Validierung gefunden. (Standardmäßig aktiviert).

  • ProcessSchemaLocation --Angegebene Schemata verarbeiten die xsi:schemaLocation oder xsi:noNamespaceSchemaLocation Attribut. (Standardmäßig aktiviert).

  • ProcessInlineSchema--Inline-XML-Schemas während der Validierung verarbeitet werden. (Standardmäßig deaktiviert).

  • ReportValidationWarnings--Melden Sie Ereignisse, wenn eine überprüfungswarnung auftritt. Eine Warnung wird normalerweise ausgegeben, wenn keine DTD oder kein XML-Schema vorhanden ist, anhand derer bzw. dessen ein bestimmtes Attribut oder Element validiert werden kann. ValidationEventHandler wird zur Benachrichtigung verwendet. (Standardmäßig deaktiviert).

Schemas

Die für die Validierung zu verwendende XmlSchemaSet.

XmlResolver-Eigenschaft

Die XmlResolverfür das Auflösen von und Zugreifen auf externe Ressourcen. Dazu zählen z. B. DTD, Schemas und alle externe Entitäten xs:include oder xs:import in das XML-Schema enthaltenen Elemente. Wenn Sie keine XmlResolver, die XmlReader verwendet einen Standard- XmlUrlResolver ohne Benutzeranmeldeinformationen.

Durch die erstellte XML-Reader die Create Methodmeet standardmäßig die folgenden Auflagen:

  • Zeilenwechsel und Attributwert werden gemäß der W3C normalisiert XML 1.0 Recommendation.

  • Alle Entitäten werden automatisch erweitert.

  • In der Dokumenttypdefinition deklarierte Standardattribute werden immer hinzugefügt, auch wenn der Reader nicht zu überprüfen.

  • Deklaration eines XML-Namespacepräfix, den richtigen XML-Namespace-URI zugeordnet ist zulässig.

  • Die Notationsnamen in einer einzelnen NotationType -Attributdeklaration undNmTokens in einer einzelnen Enumeration -Attribut Declarationare distinct.

Verwenden Sie diese XmlReaderSettings Eigenschaften angeben, der Typ der Konformität überprüft Sie aktivieren möchten:

Verwenden Sie diese XmlReaderSettings Eigenschaft

Aufgabe

Standard

CheckCharacters-Eigenschaft

Aktivieren oder deaktivieren Sie überprüft Folgendes:

  • Zeichen innerhalb des Bereichs zulässiger XML-Zeichen sind, gemäß der 2.2 Characters Abschnitt der W3C-Empfehlung für XML 1.0.

  • Alle XML-Namen gültig sind, gemäß der 2.3 Common Syntactic Constructs Abschnitt der W3C-Empfehlung für XML 1.0.

Wenn diese Eigenschaft festgelegt wird, um true (Standard), ein XmlException Ausnahme wird ausgelöst, die XML-Datei enthält ungültige Zeichen oder eine ungültige XML-Namen (z. B. ein Elementname mit einer Zahl beginnt).

Zeichen und Überprüfung aktiviert ist.

Durch Festlegen von CheckCharacters auf false wird die Zeichenüberprüfung für Zeichenentitätsverweise deaktiviert. Wenn der Reader Textdaten verarbeitet wird, es immer wird überprüft, ob XML-Namen gültig ist, unabhängig von dieser Einstellung werden.

System_CAPS_noteHinweis

Gemäß XML 1.0-Empfehlung muss bei vorhandener DTD eine Übereinstimmung auf Dokumentebene vorliegen. Daher, wenn der Reader für die Unterstützung konfiguriert ist ConformanceLevel.Fragment, aber die XML-Daten enthält eine Dokumenttypdefinition (DTD), ein XmlException ausgelöst.

ConformanceLevel-Eigenschaft

Wählen Sie die Konformität zu erzwingen:

Wenn die Daten in Übereinstimmung, keine XmlException Ausnahme ausgelöst.

Document

Der aktuelle Knoten ist der XML-Knoten, auf dem der XML-Reader derzeit positioniert ist. Alle XmlReaderMethoden führen Vorgänge in Bezug auf diesen Knoten und alle XmlReaderEigenschaften den Wert des aktuellen Knotens wiedergibt.

Die folgenden Methoden erleichtern die Knoten navigieren und die Daten analysieren.

Verwenden Sie diese XmlReaderSettings Methode

Aufgabe

Read

Lesen Sie den ersten Knoten, und blättern Sie durch den ein Stream-Knoten zu einem Zeitpunkt. Solche Aufrufe erfolgen in der Regel innerhalb einer while Schleife.

Verwenden der NodeType Eigenschaft zum Abrufen des Typs (z. B. Attribut, Kommentar, Element usw.) des aktuellen Knotens.

Skip

Überspringen Sie die untergeordneten Elemente des aktuellen Knotens, und wechseln Sie zum nächsten Knoten.

MoveToContent und MoveToContentAsync

Übersprungen Sie nicht-Inhaltsknoten, und wechseln Sie zum nächsten Inhaltsknoten oder an das Ende der Datei.

Nicht-Inhaltsknoten umfassen ProcessingInstruction, DocumentType, Comment, Whitespace, und SignificantWhitespace.

Inhaltsknoten umfassen Textknoten ohne Leerraum, CDATA, EntityReference , undEndEntity.

ReadSubtree

Ein Element und alle untergeordneten Elemente und gibt eine neue XmlReader festgelegte Instanz ReadState.Initial.

Diese Methode ist hilfreich für das Erstellen von XML-Elemente für die Begrenzung. Wenn Sie Daten an eine andere Komponente für die Verarbeitung übergeben möchten und wie viele Daten einschränken möchten kann z. B. die Komponente zugreifen.

Finden Sie unter der XmlReader.Read Referenzseite ein Beispiel für das Navigieren durch einen Stream Textknoten zu einem Zeitpunkt und den Typ der einzelnen Knoten angezeigt.

In den folgenden Abschnitten wird beschrieben, wie Sie lesen können, bestimmte Arten von Daten, z. B. Elemente, Attribute und typisierte Daten.

Die folgende Tabelle enthält die Methoden und Eigenschaften, die die XmlReader -Klasse für Verarbeitungselemente bereitstellt. Nachdem der XmlReader auf einem Element platziert wurde, spiegeln die Knoteneigenschaften, z. B. Name, die Elementwerte wider. Zusätzlich zu den unten beschriebenen Membern können auch alle allgemeinen Methoden und Eigenschaften der XmlReader-Klasse zum Verarbeiten von Elementen verwendet werden. Sie können beispielsweise mit der ReadInnerXml-Methode den Inhalt eines Elements lesen.

System_CAPS_noteHinweis

Finden Sie im Abschnitt 3.1 der W3C XML 1.0 Recommendation Definitionen von Starttags, Tags und leeres Element-Tags zu beenden.

Verwenden Sie diese XmlReader Member

Aufgabe

IsStartElement-Methode

Überprüfen Sie, ob der aktuelle Knoten ein Starttag oder ein leeres Elementtag ist.

ReadStartElement-Methode

Überprüfen Sie, ob der aktuelle Knoten ein Element ist, und setzen Sie den Reader auf den nächsten Knoten (Aufrufe IsStartElement gefolgt von Read).

ReadEndElement-Methode

Prüfen, ob der aktuelle Knoten ein Endtag ist, und setzen Sie den Reader auf den nächsten Knoten.

ReadElementString-Methode

Lesen eines nur-Text-Elements.

ReadToDescendant-Methode

Wechseln Sie den XML-Reader, auf das nächste Nachfolgerelement (untergeordnet)-Element mit dem angegebenen Namen ab.

ReadToNextSibling-Methode

Förderung des XML-Readers das nächste nebengeordnete Element mit dem angegebenen Namen ab.

IsEmptyElement-Eigenschaft

Überprüfen Sie, ob das aktuelle Element ein Endtag aufweist. Zum Beispiel:

Ein Beispiel für das Lesen des Textinhalt von Elementen, finden Sie unter der ReadString Methode. Im folgende Beispiel verarbeitet Elemente mithilfe einer while Schleife.

while (reader.Read()) {
  if (reader.IsStartElement()) {
    if (reader.IsEmptyElement)
      Console.WriteLine("<{0}/>", reader.Name);
    else {
      Console.Write("<{0}> ", reader.Name);
      reader.Read(); // Read the start tag.
      if (reader.IsStartElement())  // Handle nested elements.
        Console.Write("\r\n<{0}>", reader.Name);
      Console.WriteLine(reader.ReadString());  //Read the text content of the element.
    }
  } 
} 

XML-Attribute werden am häufigsten auf Elemente gefunden, aber sie sind auch in XML-Deklarationen und Dokumenttypknoten zulässig.

Wenn auf einem Elementknoten positioniert die MoveToAttribute Methode ermöglicht das Durchlaufen der Attributliste des Elements. Beachten Sie, dass nach dem MoveToAttribute aufgerufen wurde, Eigenschaften des Knotens wie z. B. Name, NamespaceURI, und Prefix Geben die Eigenschaften dieses Attributs, nicht die Eigenschaften des Elements das Attribut gehört.

Die XmlReader -Klasse bietet diese Methoden und Eigenschaften zum Lesen und Verarbeiten von Attributen in Elementen.

Verwenden Sie diese XmlReader Member

Aufgabe

HasAttributes-Eigenschaft

Überprüfen Sie, ob der aktuelle Knoten über Attribute verfügt.

AttributeCount-Eigenschaft

Die Anzahl der Attribute für das aktuelle Element abrufen.

MoveToFirstAttribute-Methode

Verschieben Sie auf das erste Attribut in einem Element.

MoveToNextAttribute-Methode

Wechseln Sie zum nächsten Attribut in einem Element.

MoveToAttribute-Methode

Verschieben Sie in einem angegebenen Attribut.

GetAttribute Methode oder Item Eigenschaft

Ruft den Wert eines angegebenen Attributs.

IsDefault-Eigenschaft

Überprüfen Sie, ob der aktuelle Knoten ein Attribut ist, die aus dem in der DTD oder dem Schema definierten Standardwert generiert wurde.

MoveToElement-Methode

Verschieben Sie auf das Element, das das aktuelle Attribut besitzt. Verwenden Sie diese Methode, um auf ein Element zurückzugeben, nach dessen Attribute durchsucht.

ReadAttributeValue-Methode

Analysieren Sie den Attributwert in einen oder mehrere Text, EntityReference, oder EndEntityKnoten.

Alle allgemeinen Methoden und Eigenschaften von XmlReader können auch für die Verarbeitung von Attributen verwendet werden. Beispielsweise reflektieren die XmlReader-Eigenschaft und die Name-Eigenschaft nach dem Positionieren von Value auf einem Attribut die Werte des Attributs. Sie können den Wert des Attributs auch mit einer beliebigen Read-Methode für den Inhalt abrufen.

Dieses Beispiel verwendet die AttributeCount Eigenschaft navigieren Sie durch alle Attribute eines Elements.

// Display all attributes.
if (reader.HasAttributes) {
  Console.WriteLine("Attributes of <" + reader.Name + ">");
  for (int i = 0; i < reader.AttributeCount; i++) {
    Console.WriteLine("  {0}", reader[i]);
  }
  // Move the reader back to the element node.
  reader.MoveToElement(); 
}

Dieses Beispiel verwendet die MoveToNextAttribute -Methode in einer while Schleife durch die Attribute navigieren.

if (reader.HasAttributes) {
  Console.WriteLine("Attributes of <" + reader.Name + ">");
  while (reader.MoveToNextAttribute()) {
    Console.WriteLine(" {0}={1}", reader.Name, reader.Value);
  }
  // Move the reader back to the element node.
  reader.MoveToElement();
}

Lesen von Attributen in XML-Deklarationsknoten

Wenn der XML-Reader auf einem XML-Deklarationsknoten positioniert wird die Value -Eigenschaft gibt die Version, die eigenständige und die Codierungsinformationen als einzelne Zeichenfolge zurück. XmlReader Objekte erstellt, indem die Create -Methode der XmlTextReader -Klasse, und die XmlValidatingReaderKlasse verfügbar zu machen, die Version, eigenständige und Codierung Elemente als Attribute.

Lesen von Attributen in Dokumenttypknoten

Wenn der XML-Reader auf einem Dokumenttypknoten positioniert ist die GetAttribute Methode und Item Eigenschaft kann verwendet werden, um die Werte für die Literale SYSTEM und PUBLIC zurückzugeben. Durch das Aufrufen von reader.GetAttribute("PUBLIC") wird beispielsweise der Wert PUBLIC zurückgegeben.

Lesen von Attributen auf Verarbeitungsanweisungsknoten

Wenn der XmlReader auf einem Verarbeitungsanweisungsknoten positioniert ist, gibt die Value-Eigenschaft den gesamten Textinhalt zurück. Elemente im Verarbeitungsanweisungsknoten werden nicht als Attribute behandelt. Sie können nicht gelesen werden, mit der GetAttribute oder MoveToAttribute Methode.

Die XMLReader-Klasse enthält die folgenden Elemente, die Lesen von Inhalt aus einer XML-Datei und die Inhalte als Zeichenfolgenwerte zurück. (Rückgabe von CLR-Typen finden Sie unter der nächsten Abschnitt.)

Verwenden Sie diese XmlReader Member

Aufgabe

Value-Eigenschaft

Abrufen des Textinhalts des aktuellen Knotens. Der zurückgegebene Wert hängt vom Knotentyp ab. finden Sie unter der Value Referenzseite für Details.

ReadString-Methode

Inhalt von einem Element- oder Textknotens als Zeichenfolge abrufen. Diese Methode beendet auf verarbeitungsanweisungen und Kommentare.

Weitere Informationen zur Behandlung von bestimmten Knotentypen aufgeführt, die in dieser Methode finden Sie unter der ReadString -Referenzseite.

Die Methoden ReadInnerXml und ReadInnerXmlAsync

Rufen Sie alle Inhalte des aktuellen Knotens einschließlich Markup, aber ohne die Start- und Endtags. Z. B. für:

<node>this<child id="123"/></node>

ReadInnerXml Gibt zurück:

this<child id="123"/>

Die Methoden ReadOuterXml und ReadOuterXmlAsync

Rufen Sie alle aktuellen Knotens und seiner untergeordneten Elemente, einschließlich Markup und Start-/Endtags-Inhalt ab. Z. B. für:

<node>this<child id="123"/></node>

ReadOuterXml Gibt zurück:

<node>this<child id="123"/></node>

Können Sie die Mitglieder der XmlReader Klasse (in der folgenden Tabelle aufgeführten) zum Lesen von XML-Daten und Rückgabewerte als common Language Runtime (CLR)-Typen anstelle von Zeichenfolgen. Diese Member können Sie Werte in der Darstellung zu erhalten, die für die Codierung Aufgabe am besten geeignet ist, ohne manuell analysieren oder Zeichenfolgenwerte konvertieren.

  • Die ReadElementContentAs Methoden können nur für Elementknotentypen aufgerufen werden. Diese Methoden können nur für Elemente verwendet werden, die untergeordnete Elemente oder gemischten Inhalt enthalten. Bei einem Aufruf liest das XmlReader-Objekt das Anfangstag und den Elementinhalt und wird hinter das Endelementtag verschoben. Verarbeitungsanweisungen und Kommentare werden ignoriert und Entitäten erweitert.

  • Die ReadContentAsMethoden lesen den Textinhalt an der aktuellen Position des Readers, und wenn die XML-Daten keine Schema- oder Typinformationen zugeordnet, Daten konvertieren Sie den Inhalt der in den angeforderten Rückgabetyp. Text, Leerraum, signifikanter Leerraum und CDATA-Abschnitte sind verkettet. Kommentare und verarbeitungsanweisungen werden übersprungen und Entitätsverweise werden automatisch aufgelöst.

Die XmlReader Klasse verwendet die Regeln der W3C XML Schema Part 2: DatatypesEmpfehlung.

Verwenden Sie diese XmlReaderMethode

Auf dieser CLR-Typ zurück.

ReadContentAsBoolean und ReadElementContentAsBoolean

Boolean

ReadContentAsDateTime und ReadElementContentAsDateTime

DateTime

ReadContentAsDouble und ReadElementContentAsDouble

Double

ReadContentAsLong und ReadElementContentAsLong

Int64

ReadContentAsInt und ReadElementContentAsInt

Int32

ReadContentAsString und ReadElementContentAsString

String

ReadContentAs und ReadElementContentAs

Der Typ, die Sie angeben, mit der returnType Parameter

ReadContentAsObject und ReadElementContentAsObject

Am besten geeigneten Typ, gemäß der XmlReader.ValueType Eigenschaft. Finden Sie unter Typenunterstützung in den System.Xml-Klassen für Mapping-Informationen.

Wenn ein Element einfach um einen CLR-Typ aufgrund dessen Format konvertiert werden kann, können Sie eine schemazuordnung verwenden, um eine erfolgreiche Konvertierung sicherzustellen. Im folgenden Beispiel wird eine XSD-Datei konvertieren die hire-date Element der xs:date Typ und verwendet dann die ReadElementContentAsDateTime Methode, um das Element als zurückzugeben ein DateTime Objekt.

Eingabe (hireDate.xml):

<employee xmlns="urn:empl-hire">
    <ID>12365</ID>
    <hire-date>2003-01-08</hire-date>
    <title>Accountant</title>
</employee>

Schema (hireDate.xsd):

<?xml version="1.0"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="urn:empl-hire" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="employee">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="ID" type="xs:unsignedShort" />
        <xs:element name="hire-date" type="xs:date" />
        <xs:element name="title" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

Code:

// Create a validating XmlReader object. The schema 
// provides the necessary type information.
XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.Schema;
settings.Schemas.Add("urn:empl-hire", "hireDate.xsd");
using (XmlReader reader = XmlReader.Create("hireDate.xml", settings)) {

  // Move to the hire-date element.
  reader.MoveToContent();
  reader.ReadToDescendant("hire-date");

  // Return the hire-date as a DateTime object.
  DateTime hireDate = reader.ReadElementContentAsDateTime();
  Console.WriteLine("Six Month Review Date: {0}", hireDate.AddMonths(6));
}

Ausgabe:

Six Month Review Date:  7/8/2003 12:00:00 AM

Die meisten der XmlReader Methoden verfügen über asynchrone Gegenstücke, die "Async" am Ende den Namen haben. Zum Beispiel das asynchrone Äquivalent von ReadContentAsObject ist ReadContentAsObjectAsync.

Die folgenden Methoden können mit asynchronen Methodenaufrufen verwendet werden:

Asynchrone Verwendung für Methoden, die asynchrone Entsprechungen haben Sie in den folgenden Abschnitten.

ReadStartElement-Methode

public static async Task ReadStartElementAsync(this XmlReader reader, string localname, string ns)
{
    if (await reader.MoveToContentAsync() != XmlNodeType.Element)
    {
        throw new InvalidOperationException(reader.NodeType.ToString() + " is an invalid XmlNodeType");
    }
    if ((reader.LocalName == localname) && (reader.NamespaceURI == ns))
    {
        await reader.ReadAsync();
    }
    else
    {
        throw new InvalidOperationException("localName or namespace doesn’t match");
    }
}

ReadEndElement-Methode

public static async Task ReadEndElementAsync(this XmlReader reader)
{
    if (await reader.MoveToContentAsync() != XmlNodeType.EndElement)
    {
        throw new InvalidOperationException();
    }
    await reader.ReadAsync();
}

ReadToNextSibling-Methode

public static async Task<bool> ReadToNextSiblingAsync(this XmlReader reader, string localName, string namespaceURI)
{
    if (localName == null || localName.Length == 0)
    {
        throw new ArgumentException("localName is empty or null");
    }
    if (namespaceURI == null)
    {
        throw new ArgumentNullException("namespaceURI");
    }

    // atomize local name and namespace
    localName = reader.NameTable.Add(localName);
    namespaceURI = reader.NameTable.Add(namespaceURI);

    // find the next sibling
    XmlNodeType nt;
    do
    {
        await reader.SkipAsync();
        if (reader.ReadState != ReadState.Interactive)
            break;
        nt = reader.NodeType;
        if (nt == XmlNodeType.Element &&
             ((object)localName == (object)reader.LocalName) &&
             ((object)namespaceURI ==(object)reader.NamespaceURI))
        {
            return true;
        }
    } while (nt != XmlNodeType.EndElement && !reader.EOF);

    return false;
}

ReadToFollowing-Methode

public static async Task<bool> ReadToFollowingAsync(this XmlReader reader, string localName, string namespaceURI)
{
    if (localName == null || localName.Length == 0)
    {
        throw new ArgumentException("localName is empty or null");
    }
    if (namespaceURI == null)
    {
        throw new ArgumentNullException("namespaceURI");
    }

    // atomize local name and namespace
    localName = reader.NameTable.Add(localName);
    namespaceURI = reader.NameTable.Add(namespaceURI);

    // find element with that name
    while (await reader.ReadAsync())
    {
        if (reader.NodeType == XmlNodeType.Element && ((object)localName == (object)reader.LocalName) && ((object)namespaceURI == (object)reader.NamespaceURI))
        {
            return true;
        }
    }
    return false;
}

ReadToDescendant-Methode

public static async Task<bool> ReadToDescendantAsync(this XmlReader reader, string localName, string namespaceURI)
{
    if (localName == null || localName.Length == 0)
    {
        throw new ArgumentException("localName is empty or null");
    }
    if (namespaceURI == null)
    {
        throw new ArgumentNullException("namespaceURI");
    }
    // save the element or root depth
    int parentDepth = reader.Depth;
    if (reader.NodeType != XmlNodeType.Element)
    {
        // adjust the depth if we are on root node
        if (reader.ReadState == ReadState.Initial)
        {
            parentDepth--;
        }
        else
        {
            return false;
        }
    }
    else if (reader.IsEmptyElement)
    {
        return false;
    }

    // atomize local name and namespace
    localName = reader.NameTable.Add(localName);
    namespaceURI = reader.NameTable.Add(namespaceURI);

    // find the descendant
    while (await reader.ReadAsync() && reader.Depth > parentDepth)
    {
        if (reader.NodeType == XmlNodeType.Element && ((object)localName == (object)reader.LocalName) && ((object)namespaceURI == (object)reader.NamespaceURI))
        {
            return true;
        }
    }
    return false;
}

Berücksichtigen Sie bei der Arbeit mit der XmlReader Klasse:

  • Ausnahmen von der XmlReader können offen legen, die nicht empfehlenswert weitergegeben werden Ihre app. Ihre app muss Ausnahmen abfangen und entsprechend verarbeiten.

  • Aktivieren Sie nicht Wenn Sie DOS-Probleme befürchten oder wenn Sie mit nicht vertrauenswürdigen Quellen arbeiten DTD-Verarbeitung. Die DTD-Verarbeitung ist standardmäßig deaktiviert, um XmlReader Objekte erstellt, indem die Create Methode.

    Wenn die DTD-Verarbeitung aktiviert ist, können die Ressourcen, auf die der XmlSecureResolver Zugriff hat, mit dem XmlReader eingeschränkt werden. Sie können auch Ihre app entwerfen, damit die XML-Verarbeitung bezüglich Arbeitsspeicher und Zeit eingeschränkt. Beispielsweise können Sie die Timeouts in Ihrer ASP.NET-Anwendung konfigurieren.

  • XML-Daten können Verweise auf externe Ressourcen (z. B. eine Schemadatei) enthalten. Standardmäßig werden externe Ressourcen aufgelöst, mithilfe einer XmlUrlResolver Objekt ohne Benutzeranmeldeinformationen. Durch die folgenden Aktionen können Sie die Sicherheit weiter erhöhen:

  • Die ProcessInlineSchema und ProcessSchemaLocation Validierungsflag ein XmlReaderSettings -Objekts werden nicht standardmäßig festgelegt. Dadurch wird der XmlReader bei der Verbarbeitung von XML-Daten aus einer nicht vertrauenswürdigen Quelle vor schemabasierten Angriffen geschützt. Wenn diese Flags festgelegt sind, wird der XmlResolver des XmlReaderSettings-Objekts verwendet, um die im Instanzdokument des XmlReader erkannten Schemaspeicherorte aufzulösen. Wenn die XmlResolver Eigenschaft auf festgelegt ist null, Schemaspeicherorte nicht aufgelöst sind selbst wenn die ProcessInlineSchema und ProcessSchemaLocation -Validierungsflag festgelegt sind.

    Durch während der Validierung hinzugefügte Schemas werden neue Typen hinzugefügt, sodass das Validierungsergebnis des überprüften Dokuments möglicherweise geändert wird. Daher sollten externe Schemata nur von vertrauenswürdigen Quellen aufgelöst werden.

    Es wird empfohlen, Deaktivieren der ProcessIdentityConstraints kennzeichnen, wenn nicht vertrauenswürdige, große XML-Dokumente in Szenarios mit hoher Verfügbarkeit anhand eines Schemas zu überprüfen, die Identity-Einschränkung über einen großen Teil des Dokuments besitzt. Dieses Flag ist standardmäßig aktiviert.

  • XML-Daten können eine Vielzahl von Attributen, Namespacedeklarationen, geschachtelten Elementen usw. enthalten, deren Verarbeitung sehr zeitaufwendig ist. Um die Größe der Eingabe zu begrenzen, die an der XmlReader, können Sie:

    • Begrenzen Sie die Größe des Dokuments durch Festlegen der MaxCharactersInDocument Eigenschaft.

    • Die Anzahl der Zeichen aus dem Erweitern von Entitäten durch Festlegen der MaxCharactersFromEntities Eigenschaft.

    • Erstellen Sie eine benutzerdefinierte IStream -Implementierung für die XmlReader.

  • Die ReadValueChunk Methode kann verwendet werden, um große Datenströme behandeln. Mit dieser Methode wird jeweils eine kleine Anzahl von Zeichen gelesen, anstatt dem ganzen Wert eine einzelne Zeichenfolge zuzuweisen.

  • Beim Lesen eines XML-Dokuments mit einer großen Anzahl von eindeutigen lokalen Namen, Namespaces oder Präfixen kann ein Problem auftreten. Bei Verwendung eine Klasse, die von abgeleitet ist XmlReader, und rufen Sie die LocalName, Prefix, oder NamespaceURI für jedes Element die Eigenschaft, die zurückgegebene Zeichenfolge hinzugefügt wird eine NameTable. Die Auflistung der NameTable nimmt Größe der in ein virtueller Speicherverlust Zeichenfolgenhandles nie ab. Eine Lösung hierfür ist die Ableitung der NameTable -Klasse und ein maximales Größenkontingent zu erzwingen. (Es gibt keine Möglichkeit, um zu verhindern, dass die Verwendung von einer NameTable, oder Wechseln der NameTable vollen). Eine andere Lösung besteht darin zu genannten Eigenschaften verwenden Sie stattdessen die MoveToAttribute -Methode mit der IsStartElement Methode möglichst; diese Methoden keine Zeichenfolgen zurück und umgehen somit das Problem eines Überlaufs der NameTable Auflistung.

  • XmlReaderSettings-Objekte können vertrauliche Informationen (z. B. Anmeldeinformationen des Benutzers) enthalten. Eine nicht vertrauenswürdige Komponente könnte mithilfe des XmlReaderSettings-Objekts und den Anmeldeinformationen des Benutzers XmlReader-Objekte erstellen, mit denen Daten gelesen werden können. Seien Sie vorsichtig beim Zwischenspeichern von XmlReaderSettings Objekte, oder bei der Übergabe der XmlReaderSettings -Objekts von einer Komponente an eine andere.

  • Achten Sie darauf, keine Unterstützung für Komponenten aus einer nicht vertrauenswürdigen Quelle zu gewähren (z. B. den Objekten NameTable, XmlNamespaceManager und XmlResolver).

Der folgende Beispielcode veranschaulicht, wie das asynchrone API zu verwenden ist, um XML zu parsen.

async Task TestReader(System.IO.Stream stream)
{
    XmlReaderSettings settings = new XmlReaderSettings();
    settings.Async = true;

    using (XmlReader reader = XmlReader.Create(stream, settings))
    {
        while (await reader.ReadAsync())
        {
            switch (reader.NodeType)
            {
                case XmlNodeType.Element:
                    Console.WriteLine("Start Element {0}", reader.Name);
                    break;
                case XmlNodeType.Text:
                    Console.WriteLine("Text Node: {0}",
                             await reader.GetValueAsync());
                    break;
                case XmlNodeType.EndElement:
                    Console.WriteLine("End Element {0}", reader.Name);
                    break;
                default:
                    Console.WriteLine("Other node {0} with value {1}",
                                    reader.NodeType, reader.Value);
                    break;
            }
        }
    }
}

Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 1.1
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Windows Phone
Verfügbar seit 8.1

Alle öffentlichen statischen Member ( Shared in Visual Basic) dieses Typs sind threadsicher. Die Threadsicherheit für Instanzmember ist nicht garantiert.

Zurück zum Anfang
Anzeigen: