Laden...

Suche etwas wie XmlDocument nur performanter

Erstellt von preli vor 14 Jahren Letzter Beitrag vor 14 Jahren 2.096 Views
preli Themenstarter:in
343 Beiträge seit 2007
vor 14 Jahren
Suche etwas wie XmlDocument nur performanter

Hallo,

verwendetes Datenbanksystem: "XML"

wie mein Titel schon sagt suche ich nach etwas mit dem man (wenn möglich so einfach) wie mit der XmlDocument Klasse XML-Dateien erstellen kann, aber vielleicht etwas schneller.
Bei meinen jetzigen Versuchen war XmlDocument SEHR langsam und es wird auch offiziell von Microsoft "gewarnt" dass die Klasse XMlDocument etwas resourcenfressend ist.
Kennt jemand vielleicht eine Bibliothek mit der das etwas zackiger geht?

Liebe Grüße
Preli

[- www.saftware.net -](http://www.saftware.net/)
6.911 Beiträge seit 2009
vor 14 Jahren

Hallo,

ich glaube dass Linq to XML schneller ist.

Bevorzugen würde ich XML-Serialisierung - alleine schon deshalb weil so am einfachsten eine Objekstruktur zu/von XML gebracht/gelesen werden kann.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

preli Themenstarter:in
343 Beiträge seit 2007
vor 14 Jahren

Linq to XML werd ich gleich mal ausprobieren und die Ergebnisse hier posten

------ edit begin

So, habe jetzt Linq einmal ausprobiert. So wie es aussieht ist Linq to XML wirklich etwas schneller als XmlDocument und um einiges eleganter.
Ein gutes Tutorial dazu hab ich hier gefunden: http://code-inside.de/blog/2008/02/28/howto-linq-to-xml-daten-schreiben/

------ edit ende

Ohne es jetzt getestet zu haben bezweifel ich einmal dass XML-Serialisierung recht schnell ist - außerdem hab ich keine Objektstruktur 8)

Liebe Grüße
Preli

[- www.saftware.net -](http://www.saftware.net/)
1.564 Beiträge seit 2007
vor 14 Jahren

Hallo Preli

Zur Serialisierung ist sowohl das XmlDocument als auch L2X recht schlecht geeignet. Wieso nimmst du nicht einer der von .NET mitgebrachten Serialisierungs-Methoden?

Grüße
Flo

Blog: Things about Software Architecture, .NET development and SQL Server
Twitter
Google+

Je mehr ich weiß, desto mehr weiß ich was ich noch nicht weiß.

3.971 Beiträge seit 2006
vor 14 Jahren

Wenn du XmlDocument mit XPath verwendest, ist XPathDocument warscheinlich besser geeignet

Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...

preli Themenstarter:in
343 Beiträge seit 2007
vor 14 Jahren

@Florian Reischl: ich will aber gar nichts serialisieren. Ich will nur ein XML Dokument zusammenstöpseln.

@kleines_eichhoernchen: ich muss meine XML Datei nur erstellen - weder lesen noch irgendwie anders analysieren. Soweit ich jetzt das richtig in Erinnerung hab ist XPathDocument ja eine schreibgeschützte Abbildung eines XML Dokuments im Speicher, also eher ungeeignet für mich

Ling to XML ist genau was ich brauche.
Was aber natürlich noch performanter ist, wäre das XML-Dokument per String und StringBuilder zusammenzustöpseln.
Hab mich für eine Michung aus diesen 2 Varianten entschieden.

Gruß
Preli

[- www.saftware.net -](http://www.saftware.net/)
1.564 Beiträge seit 2007
vor 14 Jahren

Serialisierung wegen:

Ohne es jetzt getestet zu haben bezweifel ich einmal dass XML-Serialisierung recht schnell ist - außerdem hab ich keine Objektstruktur

XML über Text zusammenstecken würde ich nicht machen. Wenn's dir um die höchste Performance geht, nimm den XmlWriter, schneller und speicherschonender geht's nicht.

Grüße
Flo

Blog: Things about Software Architecture, .NET development and SQL Server
Twitter
Google+

Je mehr ich weiß, desto mehr weiß ich was ich noch nicht weiß.

6.911 Beiträge seit 2009
vor 14 Jahren

Wenn's dir um die höchste Performance geht, nimm den XmlWriter

So ist es - auch Linq to Xml verwendet intern diesen.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

Gelöschter Account
vor 14 Jahren

Wenn's dir um die höchste Performance geht, nimm den XmlWriter
So ist es - auch Linq to Xml verwendet intern diesen.

mfG Gü

genauso wie der xmlserializer....

edit:

Ohne es jetzt getestet zu haben bezweifel ich einmal dass XML-Serialisierung recht schnell ist - außerdem hab ich keine Objektstruktur

ohne es getestet zu haben ist diese aussage ohnehin ungültig.

  1. die serialisierung mit dem serializer ist recht schnell.
  2. die objektstruktur kannst du dir auch aus einem schema generieren lassen.
1.564 Beiträge seit 2007
vor 14 Jahren

Wenn's dir um die höchste Performance geht, nimm den XmlWriter
So ist es - auch Linq to Xml verwendet intern diesen.

mfG Gü

genauso wie der xmlserializer....

Und das XmlDocument 8)

Die Frage ist halt wie's das eine oder andere Modell implementiert. Vorteile bei der direkten Verwendung des XmlWriters sind halt:
* Kein Overhead durch andere Klassen
* Kann streamen, muss also nicht alles im Speicher halten

Blog: Things about Software Architecture, .NET development and SQL Server
Twitter
Google+

Je mehr ich weiß, desto mehr weiß ich was ich noch nicht weiß.

preli Themenstarter:in
343 Beiträge seit 2007
vor 14 Jahren

ohne es getestet zu haben ist diese aussage ohnehin ungültig.

Oje, erschwischt 😁

Ich bin jetzt in der Zwischenzeit komplett darauf umgestiegen mir mein XML Dokument "per Hand" zusammenzustellen. Soll heißen, dass ich die einzelnen Teile direkt in einen Stream reinschreibe. Ist logischerweise sehr performant.

Da ich das Dokument nur erstelle und nicht irgendwie verändere klappt das auch ganz gut. Außerdem sind meine Funktionen ähnlich rekursiv verschachtelt wie ein XML-Dokument weshalb ich eigentlich auch keine Probleme habe die Endtags zu vergessen.

Gruß
Preli

[- www.saftware.net -](http://www.saftware.net/)