Diese Dokumentation wurde archiviert und wird nicht länger gepflegt.

XmlTextReader-Klasse

Stellt einen Reader dar, der schnellen, nicht zwischengespeicherten Vorwärtszugriff auf XML-Daten bietet.

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

public class XmlTextReader : XmlReader, IXmlLineInfo, IXmlNamespaceResolver
public class XmlTextReader extends XmlReader implements IXmlLineInfo, IXmlNamespaceResolver
public class XmlTextReader extends XmlReader implements IXmlLineInfo, IXmlNamespaceResolver

HinweisHinweis

Die empfohlene Vorgehensweise für die Version Microsoft .NET Framework, Version 2.0 besteht darin, mithilfe der System.Xml.XmlReader.Create-Methode XmlReader-Instanzen zu erstellen. So können Sie die neuen Features dieser Version in vollem Umfang nutzen. Weitere Informationen finden Sie unter Erstellen von XML-Readern.

XmlTextReader stellt schreibgeschützten Vorwärtszugriff auf einen Stream von XML-Daten bereit. Der aktuelle Knoten verweist auf den Knoten, auf dem der Reader positioniert ist. Der Reader wird durch eine beliebige Lesemethode weitergerückt, und der Wert des aktuellen Knotens wird durch Eigenschaften wiedergegeben.

Diese Klasse implementiert den XmlReader und entspricht der W3C-Spezifikation für XML (Extensible Markup Language, Version 1.0, sowie den Empfehlungen für Namespaces in XML. Der XmlTextReader stellt folgende Funktionen bereit:

  • Erzwingt die Regeln für wohlgeformtes XML.

  • Der XmlTextReader stellt keine Datenvalidierung bereit.

  • Prüft, ob die DocumentType-Knoten wohlgeformt sind. Der XmlTextReader prüft die DTD auf Wohlgeformtheit, verwendet aber die DTD jedoch nicht zur Überprüfung.

  • Bei Knoten, deren NodeType XmlNodeType.EntityReference ist, wird ein einzelner leerer EntityReference-Knoten zurückgegeben (d. h., die Value-Eigenschaft ist String.Empty).

HinweisHinweis

Die eigentlichen Entitätsdeklarationen in der DTD werden als Entity-Knoten bezeichnet. Wenn Sie in Ihren Daten auf diese Knoten verweisen, werden sie EntityReference-Knoten genannt.

  • Erweitert die Standardattribute nicht.

Da der XmlTextReader die zur Datenvalidierung zusätzlich erforderlichen Prüfungen nicht ausführt, stellt er einen schnellen Parser für Wohlgeformtheit bereit.

Verwenden Sie einen XmlReader, um die Datenvalidierung auszuführen. Weitere Informationen finden Sie unter Validieren von XML-Daten mit "XmlReader".

Um XML-Daten aus einem XmlDocument zu lesen, verwenden Sie XmlNodeReader.

XmlTextReader löst bei XML-Analysefehlern eine XmlException aus. Nachdem eine Ausnahme ausgelöst wurde, ist der Zustand des Reader nicht vorhersehbar. Der angegebene Knotentyp könnte sich z. B. vom tatsächlichen Knotentyp des aktuellen Knotens unterscheiden. Überprüfen Sie mit der ReadState-Eigenschaft, ob ein Reader im Fehlerzustand ist.

Nähere Erläuterungen zu XmlReader-Klassen finden Sie unter Lesen von XML mit dem "XmlReader".

Sicherheitsüberlegungen

Berücksichtigen Sie die folgenden Aspekte beim Verwenden der XmlTextReader-Klasse.

  • Vom XmlTextReader ausgelöste Ausnahmen können Pfadinformationen offen legen, die in der Anwendung nicht weitergegeben werden sollen. Die Anwendungen müssen Ausnahmen abfangen und entsprechend verarbeiten.

  • Die DTD-Verarbeitung ist standardmäßig aktiviert. Deaktivieren Sie die DTD-Verarbeitung, wenn Sie Bedenken hinsichtlich der Gefahr von Denial-of-Service-Angriffen haben oder nicht vertrauenswürdige Quellen verwenden. Legen Sie die ProhibitDtd-Eigenschaft auf true fest, um die DTD-Verarbeitung zu deaktivieren.

    Bei aktivierter DTD-Verarbeitung können Sie mithilfe des XmlSecureResolver die Ressourcen beschränken, auf die der XmlTextReader zugreifen kann. Sie können die Anwendung auch so entwerfen, dass die XML-Verarbeitung bezüglich Arbeitsspeicher und Zeit eingeschränkt wird. Konfigurieren Sie z. B. Timeoutbeschränkungen in der ASP.NET-Anwendung.

  • XML-Daten können Verweise auf externe Ressourcen, z. B. eine DTD-Datei, einschließen. Externe Ressourcen werden standardmäßig mit einem XmlUrlResolver-Objekt ohne Benutzeranmeldeinformationen aufgelöst. Durch die folgenden Aktionen können Sie die Sicherheit weiter erhöhen:

    • Beschränken Sie die Ressourcen, auf die der XmlTextReader zugreifen kann, indem Sie die XmlResolver-Eigenschaft auf ein XmlSecureResolver-Objekt festlegen.

    • Lassen Sie nicht zu, dass der XmlReader durch Festlegen der XmlResolver-Eigenschaft auf NULL (Nothing in Visual Basic) beliebige externe Ressourcen öffnen kann.

  • XML-Daten können eine große Anzahl von Attributen, Namespacedeklarationen, geschachtelten Elementen usw. enthalten, deren Verarbeitung eine gewisse Zeit in Anspruch nehmen kann. Um die Größe der Eingabe zu begrenzen, die an den XmlTextReader gesendet wird, erstellen Sie eine benutzerdefinierte IStream-Implementierung, die Sie dem XmlTextReader bereitstellen.

  • Die ReadValueChunk-Methode kann verwendet werden, um große Datenstreams zu behandeln. Mit dieser Methode wird immer nur eine geringe Anzahl von Zeichen gelesen, statt eine einzige Zeichenfolge für den gesamten Wert zu reservieren.

  • Standardmäßig werden allgemeine Entitäten nicht erweitert. Allgemeine Entitäten werden erweitert, wenn Sie die ResolveEntity-Methode aufrufen.

Hinweise für Erben Diese Klasse besitzt eine Vererbungsforderung. Zum Erben von XmlTextReader ist vollständige Vertrauenswürdigkeit erforderlich. Weitere Informationen finden Sie unter Vererbungsforderungen.

System.Object
   System.Xml.XmlReader
    System.Xml.XmlTextReader

Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0
Anzeigen: