Heim  >  Artikel  >  Java  >  XML-Daten einfach in .NET Framework verarbeiten (4-1)

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

黄舟
黄舟Original
2016-12-20 14:12:321464Durchsuche

XmlTextWriter-Klasse

Das Erstellen eines XML-Dokuments mit den Methoden in diesem Abschnitt ist offensichtlich nicht schwierig. Seit vielen Jahren erstellen Entwickler XML-Dokumente, indem sie einige Zeichenfolgen im Cache verketten und die zwischengespeicherten Zeichenfolgen dann in eine Datei ausgeben. Das Erstellen eines XML-Dokuments auf diese Weise funktioniert jedoch nur, wenn Sie sicherstellen, dass die Zeichenfolge keine winzigen Fehler enthält. Das .NET Framework bietet eine bessere Möglichkeit zum Erstellen von XML-Dokumenten durch die Verwendung von XMLwriter.

??Die XML Writer-Klasse gibt XML-Daten in einer Vorwärtsmethode in einen Stream oder eine Datei aus. Noch wichtiger ist, dass XML Writer so konzipiert ist, dass alle XML-Daten den vom W3C XML 1.0 empfohlenen Spezifikationen entsprechen. Sie müssen sich nicht einmal Sorgen machen, dass Sie vergessen, das schließende Tag zu schreiben, da XML Writer es für Sie schreibt. XmlWriter ist die abstrakte Basisklasse für alle XML-Writer. .NET Framework bietet nur eine Writer-Klasse: die XmlTextWriter-Klasse.

?? Werfen wir zunächst einen Blick auf die Unterschiede zwischen XML-Writern und alten Writern. Der folgende Code behält ein Array von String-Typen bei:

StringBuilder sb = new StringBuilder(''); 🎜>
sb.Append('');

foreach(string s in theArray) {

sb.Append('sb.Append(s);

sb.Append(''/>');

}

sb.Append('' ) ;

??Der Code entnimmt die Elemente in den Daten durch eine Schleife, schreibt den Beschriftungstext und akkumuliert sie in einer Zeichenfolge. Der Code stellt sicher, dass der Ausgabeinhalt gut formatiert ist, achtet auf die Einrückung neuer Zeilen und unterstützt Namespaces. Dieser Ansatz kann fehlerfrei sein, wenn die von Ihnen erstellte Dokumentstruktur relativ einfach ist. Wenn Sie jedoch die Handhabung von Direktiven, Namespaces, Einrückungen, Formatierungen und Entitäten unterstützen müssen, steigt die Codemenge exponentiell an, und damit auch die Wahrscheinlichkeit von Fehlern.

Die Schreibmethodenfunktion des XML-Writers entspricht jedem möglichen XML-Knotentyp, wodurch der Prozess der Erstellung von XML-Dokumenten logischer und weniger abhängig von umständlichen Auszeichnungssprachen wird. Abbildung 6 zeigt, wie die Methoden der XmlTextWriter-Klasse verwendet werden, um Zeichenfolgendaten zu verbinden. Der Code ist sehr prägnant und der Code mit XML-Writer ist einfacher zu lesen und hat eine bessere Struktur.

Abbildung 6 Serialisierung eines String-Arrays

void CreateXmlFileUsingWriters(String[] theArray, string filename)

{

// Öffnen Sie den XML-Writer (Use Standardzeichensatz)

XmlTextWriter xmlw = new ();

xmlw.WriteStartElement('array');

foreach(string s in theArray)

{

xmlw.WriteStartElement(' element

xmlw.WriteAttributeString('value', s);

xmlw.WriteEndElement();

xmlw.WriteEndDocument( ) ;



// Den Writer schließen

xmlw.Close();

}

??Der XML-Writer ist kein Zauberer – es kann keine Eingabefehler beheben. Der XML-Writer überprüft nicht, ob Element- und Attributnamen gültig sind, und stellt auch nicht sicher, dass ein verwendeter Unicode-Zeichensatz für den Codierungssatz der aktuellen Architektur geeignet ist. Um Ausgabefehler zu vermeiden, müssen, wie oben erwähnt, Nicht-XML-Zeichen eliminiert werden. Der Autor stellt diese Methode jedoch nicht zur Verfügung.

?? Außerdem prüft Writer beim Erstellen eines Attributknotens nicht, ob der Name des Attributknotens mit dem Namen eines vorhandenen Elementknotens übereinstimmt. Schließlich handelt es sich bei der XmlWriter-Klasse nicht um eine verifizierte Writer-Klasse und sie garantiert nicht, ob die Ausgabe dem Schema oder der DTD entspricht. Die Writer-Klasse mit Validierung im .NET Framework wird derzeit nicht bereitgestellt. Aber in meinem Buch „Applied XML Programming for Microsoft .NET (Microsoft Press®, 2002)“ habe ich eine Writer-Komponente mit Verifizierung geschrieben. Sie können den Quellcode von der folgenden URL herunterladen: http://www.microsoft.com/MSPress/books/6235.asp

?? des XML-Writers. Diese Werte werden von der WriteState-Enumerationsklasse abgeleitet. Wenn Sie einen Writer erstellen, lautet sein Anfangsstatus „Start“, was darauf hinweist, dass Sie das Objekt konfigurieren werden. Tatsächlich wurde der Writer noch nicht gestartet. Der nächste Status ist Prolog, der festgelegt wird, wenn Sie die Methode WriteStartDocument aufrufen, um mit der Arbeit zu beginnen. Dann hängt der Zustandsübergang von dem Dokument ab, das Sie schreiben, und vom Inhalt des Dokuments. Der Prolog-Status bleibt erhalten, bis Sie einen Nicht-Element-Knoten hinzufügen, z. B. Anmerkungselemente, Verarbeitungsanweisungen und Dokumenttypen. Wenn der erste Knoten, der der Wurzelknoten ist, geschrieben wird, ändert sich der Status in „Element“. Der Status wird in Attribute konvertiert, wenn Sie die WriterStartAtribute-Methode aufrufen, nicht wenn Sie die WriteAtributeString-Methode aufrufen, um ein Attribut zu schreiben. In diesem Fall sollte der Status Element lauten. Wenn Sie ein schließendes Tag (>) schreiben, wird der Status in „Inhalt“ umgewandelt. Wenn Sie mit dem Schreiben des Dokuments fertig sind, rufen Sie die Methode WriteEndDocument auf, und der Status kehrt zu „Start“ zurück, bis Sie mit dem Schreiben eines anderen Dokuments beginnen oder den Writer ausschalten.


Das Obige ist der Inhalt der einfachen Verarbeitung von XML-Daten (4-1) 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