Heim >Backend-Entwicklung >C#.Net-Tutorial >XML-Daten einfach in .NET Framework verarbeiten (1-1)
??Im .NET Framework ermöglichen die Klassen XmlTextReader und XmlTextWriter die Lese- und Schreibsteuerung von XML-Daten. In diesem Artikel beschreibt der Autor die Systemstruktur von XML-Browsern (Readern) und wie diese mit XMLDOM- und SAX-Spezifizierern kombiniert werden. Der Autor zeigt außerdem, wie man den Browser zum Analysieren und Validieren von XML-Dokumenten verwendet, wie man gut formatierte XML-Dokumente erstellt und wie man Funktionen zum Lesen/Schreiben großer XML-Dokumente basierend auf Base64- und BinHex-Kodierung verwendet. Abschließend erläutert der Autor die Implementierung eines Stream-basierten Lese-/Schreibanalysators, der Leser und Schreiber in einer separaten Klasse kapselt.
?? Vor etwa drei Jahren nahm ich an einer Software-Forschungskonferenz teil und das Thema lautete: „Ohne XML wird es keine Zukunft der Programmierung geben.“ XML entwickelt sich tatsächlich Schritt für Schritt und wurde in das NET Framework eingebettet. In diesem Artikel werde ich die Rolle der API für die Verarbeitung von XML-Dokumenten im NET Framework und ihre internen Eigenschaften erläutern und anschließend einige häufig verwendete Funktionen demonstrieren.
??Von MSXML zu .net XML
??Vor dem Aufkommen von NET Framework waren Sie es gewohnt, MSXML-Dienste – eine COM-basierte Klassenbibliothek – zum Schreiben von Windows-XML-Treibern zu verwenden . Im Gegensatz zu den Klassen im .NET Framework liegt ein Teil des Codes der MSXML-Klassenbibliothek tiefer als die API und ist vollständig unten im Betriebssystem eingebettet. MSXML kann zwar mit Ihrer Anwendung kommunizieren, aber es kann nicht wirklich in die externe Umgebung integriert werden.
??Die MSXML-Klassenbibliothek kann in Win32 importiert und auch in der CLR verwendet werden, sie kann jedoch nur als externe Serverkomponente verwendet werden. Anwendungen, die auf .NET Framework basieren, können XML-Klassen jedoch direkt verwenden, um Anwendungen in andere Namespaces von .NET Framework zu integrieren, und der geschriebene Code ist einfach zu durchsuchen.
??Als unabhängige Komponente bietet der MSXML-Parser einige erweiterte Funktionen wie die asynchrone Analyse. Diese Funktion ist in der XML-Klasse im .NET Framework und in anderen Klassen im .NET Framework nicht verfügbar. Auf dieser Basis können Sie die XML-Klasse jedoch problemlos in andere Klassen integrieren kann mehr Wirksamkeit hinzufügen.
Die XML-Klasse im .NET Framework stellt grundlegende Funktionen zum Analysieren, Abfragen und Konvertieren von XML-Daten bereit. Im .NET Framework finden Sie Klassen, die Xpath-Abfragen und XSLT-Transformationen unterstützen, sowie Klassen zum Lesen/Schreiben von XML-Dokumenten. Darüber hinaus enthält das .NET Framework auch andere Klassen zur Verarbeitung von XML, wie z. B. Objektserialisierung (XmlSerializer und die SoapFormatter-Klasse), Anwendungskonfiguration (AppSettingsReader-Klasse) und Datenspeicherung (DataSet-Klasse). In diesem Artikel bespreche ich nur Klassen, die grundlegende XML-E/A-Operationen implementieren.
??XML-Analysemodus
??Da XML eine Auszeichnungssprache ist, sollte es ein Tool geben, um die im Dokument gespeicherten Informationen gemäß einer bestimmten Syntax zu analysieren und zu verstehen. Bei diesem Tool handelt es sich um einen XML-Parser – eine Komponente, die markierten Text liest und plattformspezifische Objekte zurückgibt.
??Alle XML-Parser, egal zu welcher Betriebsplattform sie gehören, werden in die folgenden zwei Kategorien unterteilt: baumbasierte oder ereignisbasierte Prozessoren. Diese beiden Typen werden normalerweise mithilfe von XMLDOM (dem Microsoft XML Document Object Model) und SAX (Simple API for XML) implementiert. Der XMLDOM-Parser ist eine generische baumbasierte API – er stellt das XML-Dokument als Baum von speicherinternen Strukturen bereit. Der SAX-Parser ist eine ereignisbasierte API – er verarbeitet jedes Element im XML-Datenstrom (er fügt die XML-Daten in den Strom ein und verarbeitet sie). Normalerweise kann das DOM von einem SAX-Stream geladen und ausgeführt werden, sodass sich diese beiden Verarbeitungsarten nicht gegenseitig ausschließen.
?? Im Allgemeinen sind SAX-Parser und XMLDOM-Parser genau das Gegenteil und ihre Analysemodi sind sehr unterschiedlich. XMLDOM ist innerhalb seiner Funktionssammlung gut definiert und kann nicht erweitert werden. Wenn ein großes Dokument verarbeitet wird, nimmt es viel Speicherplatz in Anspruch, um die riesige Sammlung von Funktionen zu verarbeiten.
Der SAX-Analysator verwendet Clientanwendungen, um Analyseereignisse über vorhandene Instanzen plattformspezifischer Objekte zu verarbeiten. Der SAX-Parser steuert die gesamte Verarbeitung, indem er die Daten an den Handler „pusht“, der wiederum die Daten zur Verarbeitung akzeptiert oder ablehnt. Der Vorteil dieses Modus besteht darin, dass er sehr wenig Speicherplatz benötigt.
??.NET Framework unterstützt den XMLDOM-Modus vollständig, unterstützt jedoch nicht den SAX-Modus. Warum? Denn das .NET Framework unterstützt zwei verschiedene Analysemodi: XMLDOM-Parser und XML-Browser. Es unterstützt offensichtlich keinen SAX-Parser, aber das bedeutet nicht, dass es keine SAX-Parser-ähnliche Funktionalität bietet. Alle Funktionen von SAX können über den XML-Browser einfacher realisiert und effektiver genutzt werden. Im Gegensatz zu SAX-Parsern werden .NET Framework-Browser alle unter Clientanwendungen ausgeführt. Auf diese Weise kann die Anwendung selbst nur die wirklich benötigten Daten „herausziehen“ und dann aus dem XML-Datenstrom herausspringen. Der SAX-Analysemodus verarbeitet alle nützlichen und nutzlosen Informationen für die Anwendung.
??Der Browser basiert auf dem .NET Framework-Streaming-Modus und seine Arbeitsweise ähnelt einem Datenbankcursor. Interessanterweise bieten Klassen, die ein ähnliches Cursor-Analysemuster implementieren, zugrunde liegende Unterstützung für den XMLDOM-Parser im .NET Framework. Die beiden abstrakten Klassen XmlReader und XmlWriter sind die Grundklassen aller XML-Klassen im .NET Framework, einschließlich der XMLDOM-Klasse, der ADO.NET-Treiberklasse und der Konfigurationsklasse. Sie haben also zwei alternative Möglichkeiten, XML-Daten im .NET Framework zu verarbeiten. Verwenden Sie die Klassen XmlReader und XmlWriter, um XML-Daten direkt zu verarbeiten, oder verwenden Sie den XMLDOM-Modus. Weitere Informationen zum Lesen von Dokumenten im .NET Framework finden Sie im Artikel in der Rubrik „Cutting Edge“ in der Augustausgabe 2002 von MSDN.
Das Obige ist der Inhalt der einfachen Verarbeitung von XML-Daten (1-1) in .NET Framework. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn).