Frage

Das .NET Framework hat nun (mindestens) vier verschiedene Methoden des XML-String zu lesen. Ich habe jede von XmlDocument, XmlReader, XPath und XElement verwendet, aber das ist die effizienteste zu verwenden, bei der Codierung oder während der Ausführung? Ist die jeweils für eine andere Aufgabe, was sind die Vor- und Nachteile?


Update: ein XmlReader scheint der schnellste Weg, um XML zu lesen, die mir vernünftig klingen, aber es seine Grenzen hat. Ich würde gerne wissen, ob es ein Unterschied in der Leistung zwischen XmlDocument und XLinq ist xml nicht sequentiell für den Zugriff.


Update: Ich fand einige Beiträge die verschiedenen Methoden zum Laden eines XML-Dokuments zu vergleichen. XmlReader ist die schnellste, es ist unbedeutend Unterschied zwischen XmlDocument und LINQ to XML, bis Sie ein Dokument mit 10.000+ Knoten laden, wo LINQ to XML vor kommt.

War es hilfreich?

Lösung

Die drei häufigsten Methoden zu lesen sind:

XmlDocument Er liest die gesamte Datei in einer Baumstruktur, die dann zugegriffen werden kann, XPath oder durch alle Knoten durchsuchen. Es erfordert viel Speicher für sehr große Datei, da die gesamte XML-Struktur muss in den Speicher geladen werden. Sehr gut und einfach für kleinere Dateien zu verwenden (weniger als ein paar megs).

XmlReader Schnell, aber auch ein echten Schmerzen zu verwenden, da es sequenzielle ist. Wenn Sie jemals wieder gehen müssen, können Sie nicht, und XML-Struktur sind in der Regel sehr anfällig desorganisiert Aufträge zu haben. Auch, wenn Sie von einem nicht enden wollenden Strom von XML lesen, ist dies wahrscheinlich der einzige Weg zu gehen.

XML Serializer Dieses im Grunde tut alles für Sie, bieten Sie das Wurzelobjekt des Modells und es schafft und das XML für Sie gelesen. Sie haben jedoch fast keine Kontrolle über die Struktur, und Versionen des Objekts älter Lesen ist ein Schmerz. So wird dies nicht funktionieren sehr gut für persistance.

XDocument und LINQ to XML Wie Daniel zeigte gerade heraus. Aber ich weiß es nicht genug, um zu kommentieren. Ich lade alle, die Post zu bearbeiten und die fehlenden Informationen hinzuzufügen.


Jetzt schreiben, ist eine andere Geschichte. Es ist ein Schmerz ein XmlDocument zu halten und XmlWriter ist ein Kinderspiel zu verwenden.

Ich würde sagen, aus meiner Erfahrung, dass die beste Combo zu schreiben, ist XmlWriter und liest XmlDocument verwenden.

Andere Tipps

Es gibt auch XDocument und LINQ to XML, die ich bei weitem die effizienteste berücksichtigen, wenn es an der Zeit Programmierer kommt.

Die schnellste würde XmlTextReader werden. Von MSDN:

  

"Stellt einen Leser, die eine schnelle, nicht-cached bietet, zukunfts nur   Zugriff auf XML-Daten. "

Mehr hier: XmlTextReader Klasse

Auch wenn es wirklich das Problem hängt die „Methode“ zu entscheiden, wäre am apropriate für den Einsatz. Wenn Sie nur einmal eine XML-Datei lesen (z .: Lesen und das Caching einige globale App-Einstellungen, etc.), dann XmlTextReader ist der Gewinner. Aber denken Sie daran, es ist nur vorwärts-Leser. Wenn Sie suchen müssen / ändern Allover-XML, dann sollten Sie wahrscheinlich einen href verwenden <= „http://msdn.microsoft.com/en-us/library/system.xml.xmldocument.aspx“ rel =“ nofollow noreferrer "> XmlDocument Klasse .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top