Heim  >  Artikel  >  Backend-Entwicklung  >  XML-Daten einfach in .NET Framework verarbeiten (1-2)

XML-Daten einfach in .NET Framework verarbeiten (1-2)

黄舟
黄舟Original
2016-12-20 14:02:571204Durchsuche

?XmlReader-Klasse

??Der XML-Browser unterstützt eine Programmierschnittstelle, die zum Herstellen einer Verbindung zu XML-Dokumenten und zum „Herausziehen“ der gewünschten Daten verwendet wird. Wenn Sie den Browser genauer verstehen, werden Sie feststellen, dass der Browser ähnlich funktioniert wie unsere Desktop-Anwendungen, die Daten aus der Datenbank abrufen. Der Datenbankdienst gibt ein Cursorobjekt zurück, das alle Abfrageergebnissätze enthält und einen Verweis auf die Startadresse des Zieldatensatzes zurückgibt. Der Client des XML-Browsers erhält eine Referenz auf die Browserinstanz. In diesem Beispiel wird der zugrunde liegende Datenstrom extrahiert und die abgerufenen Daten als XML-Baum angezeigt. Die Browser-Klasse stellt einen schreibgeschützten Vorwärtscursor bereit. Sie können die von der Browser-Klasse bereitgestellten Methoden verwenden, um den Cursor zu drehen und jedes Datenelement im Ergebnissatz zu durchlaufen.

?? Im Browser betrachtet ist das XML-Dokument keine getaggte Textdatei, sondern eine serialisierte Knotensammlung. Es handelt sich um einen speziellen Cursormodus im .NET Framework; Sie können keine andere ähnliche API-Funktion im .NET Framework finden.

?? Es gibt mehrere Unterschiede zwischen Browsern und XMLDOM-Parsern. Der XML-Browser ist schreibgeschützt. Er verfügt über keine Konzepte für übergeordnete, untergeordnete, übergeordnete und Geschwisterknoten und ist schreibgeschützt. Im .NET Framework ist das Lesen und Schreiben von XML-Dokumenten in zwei völlig unterschiedliche Funktionen unterteilt, die jeweils durch die Klassen XmlReader und XmlWriter ausgeführt werden. Um XML-Dokumente zu bearbeiten, können Sie einen XMLDOM-Parser verwenden oder selbst eine Klasse entwerfen, um diese beiden Funktionen zu erreichen. Beginnen wir mit der Analyse der Programmfunktionen des Browsers.

XmlReader ist eine abstrakte Klasse, deren Funktionalität erweitert und erweitert werden kann. Benutzerprogramme basieren im Allgemeinen auf den folgenden drei Kategorien: XmlTextReader, XmlValidatingReader oder XmlNodeReader-Klasse. Alle diese Klassen verfügen über die in Abbildung 1 dargestellten Eigenschaften und die in Abbildung 2 dargestellten Methoden. Es ist zu beachten, dass die Werte einiger Eigenschaften tatsächlich an eine tatsächliche Browserklasse gebunden sind und sich verschiedene Klassen von der Basisklasse unterscheiden können. Daher basiert die Erklärung jedes Attributs in Abbildung 1 auf der Basisklasse. Beispielsweise gibt die CanResolveEntity-Eigenschaft nur in der XmlValidatingReader-Klasse „true“ zurück, in anderen Browserklassen kann sie jedoch auf „false“ gesetzt werden. Ebenso können die tatsächlichen Rückgabewerte einiger Methoden in Abbildung 2 für verschiedene Klassen unterschiedlich sein. Wenn der Knotentyp beispielsweise kein Elementknoten ist, ist der Rückgabewerttyp aller Methoden, die Atrributes enthalten, ungültig.

??Die XmlTextReader-Klasse verwendet eine vorwärtsgerichtete, schreibgeschützte Methode, um schnell auf den XML-Datenstrom zuzugreifen. Der Browser überprüft zunächst, ob das XML-Dokument wohlgeformt ist, und löst andernfalls eine Ausnahme aus. XmlTextReader prüft, ob die DTD wohlgeformt ist, wendet die DTD jedoch nicht an, um das Dokument zu validieren. XmlTextReader lädt das XML-Dokument über seinen Dateinamen, seine URL oder aus einem Dateistream und verarbeitet die XML-Dokumentdaten dann schnell. Wenn Sie die Daten des Dokuments validieren müssen, können Sie die Klasse XmlValidatingReader verwenden.

??Sie können Instanzen der XmlTextReader-Klasse auf verschiedene Arten erstellen, indem Sie Dateien von der Festplatte laden, von URL-Adressen laden, aus Streams laden und XML-Dokumentdaten aus Text lesen:

??XmlTextReader reader = new XmlTextReader(file);

??Beachten Sie, dass Sie für alle öffentlichen (öffentlichen) Strukturfunktionen der XmlTextReader-Klasse die Datenquelle angeben müssen Stream, Dateien oder andere. Die Standardstrukturfunktion von XmlTextReader ist geschützt und kann daher nicht direkt angewendet werden. Wie bei allen Browserklassen in .NET Framework (z. B. der SqlDataReader-Klasse) können Sie, sobald das Browserobjekt verbunden und geöffnet ist, die Read-Methode verwenden, um auf die Daten zuzugreifen. Zu Beginn können wir nur die Read-Methode verwenden, um den Zeiger auf das erste Element zu verschieben. Anschließend können wir die Read-Methode oder andere Methoden (wie Skip, MoveToContent und ReadInnerXml) verwenden, um den Zeiger auf das nächste Knotenelement zu verschieben. Um den Inhalt des gesamten XML-Dokuments zu verarbeiten, können Sie eine Schleife verwenden, um den Dokumentinhalt basierend auf dem Rückgabewert der Read-Methode zu durchlaufen. Da die Read-Methode einen booleschen Wert zurückgibt, wird der Endknoten des Dokuments gelesen Die Lesemethode gibt „false“ zurück, andernfalls gibt sie „true“ zurück.



??Abbildung 3 Ausgabe eines XML-Dokumentknotenlayouts

??string GetXmlFileNodeLayout(string file)
??{
??// Erstellen Eine XmlTextReader-Klasse zeigt auf das Ziel-XML-Dokument
??
??{
??// Start-Tag schreiben, wenn der Knotentyp Element
ist??if (reader.NodeType == XmlNodeType.Element)
??{
?? // Fügen Sie entsprechend der Tiefe des Knotens, in dem sich das Element befindet, das Tabulatorzeichen „reader.Depth“ hinzu und schreiben Sie dann den Elementnamen in <>.
??tabPrefix = new string('t', reader.Depth);
??}
??else
??{
??//End-Tag schreiben, wenn der Knotentyp Element ist
??if (reader.NodeType == XmlNodeType.EndElement)
??{
??tabPrefix = new string('t', reader.Depth);??writer.WriteLine('{0}', tabPrefix, reader.Name);
??}
??}
??}

??// Ausgabe auf dem Bildschirm
??string buf =writer.ToString();
??writer.Close();

??// geschlossener Stream
??reader.Close(); >
??return buf;
??}


??Abbildung 3 zeigt eine einfache Funktion zur Ausgabe der Knotenelemente eines bestimmten XML-Dokuments. Diese Funktion öffnet zunächst ein XML-Dokument und verwendet dann eine Schleife, um den gesamten Inhalt des XML-Dokuments zu verarbeiten. Bei jedem Aufruf der Read-Methode bewegt sich der Zeiger des Browsers einen Knoten nach unten. In den meisten Fällen kann die Read-Methode Elementknoten verarbeiten, aber manchmal, wenn Sie von einem Knoten zum nächsten wechseln, bewegen Sie sich möglicherweise zwischen zwei verschiedenen Knotentypen. Die Read-Methode kann jedoch nicht zwischen Attributknoten wechseln. Die MoveToContent-Methode des Browsers ermöglicht es dem Zeiger, von der Kopfknotenposition zur ersten Inhaltsknotenposition zu springen. Sie können die Skip-Methode auch verwenden, um den Zeiger in Knoten vom Typ ProcessingInstruction, DocumentType, Comment, Whitespace und SignificantWhitespace zu verschieben.

Das Obige ist der Inhalt der einfachen Verarbeitung von XML-Daten (1-2) in .NET Framework. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn).


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn