16 Stimmen

XmlDocument vs. XmlWriter

Wie ich sehe, können Sie Xml-Dateien mit XmlDocument oder XmlWriter erstellen.

Gibt es Vorteile für die eine oder andere Methode?

21voto

Robert Rossney Punkte 91100

XmlWriter übernimmt das strombasierte Schreiben von XML-Daten. XmlDocument baut XML-Daten als Objektmodell im Speicher auf.

Sie verwenden XmlWriter wenn Sie XML-Dokumente erstellen müssen, ohne dass der Speicherbedarf proportional zur Größe des Dokuments ist. Sie verwenden XmlDocument wenn Sie XML im Speicher verarbeiten müssen - wenn Sie ein vorhandenes XML-Dokument in ein Objektmodell parsen oder Elemente an beliebigen Stellen erstellen oder ein vorhandenes Dokument aktualisieren oder XPath zum Durchsuchen eines Dokuments verwenden. (Für den letzteren Fall würden Sie eigentlich XPathDocument aber auf jeden Fall werden Sie konnte nicht einen XmlWriter da sie schreibgeschützt ist).

Natürlich ist es auch möglich, XML-Daten in einen Stream zu schreiben, indem man eine XmlDocument . Aber Sie verwenden eigentlich eine XmlWriter das zu tun, denn das ist es, was XmlDocument intern verwendet wird.

5voto

Darin Dimitrov Punkte 990883

Das hängt von Ihrem Szenario ab. XmlDocument lädt das gesamte Dokument in den Speicher, während XmlWriter verwendet einen Stream und ist daher für die Arbeit mit großen XML-Dokumenten besser geeignet. Andererseits könnte XmlDocument einfacher zu verwenden sein.

4voto

Manu Punkte 28059

Wenn Sie .Net Framework 3.5 unterstützen, würde ich Ihnen empfehlen, stattdessen mit XDocument und XElement zu arbeiten. Es ist eine viel einfachere und freundlichere API

1voto

Arsen Mkrtchyan Punkte 48540

XmlDocument speichert die gesamten Daten im Speicher, daher ist es langsam, wenn die Datei groß ist (500 MB und mehr), aber einfach zu verwenden XmlWriter schreibt direkt in den Stream

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X