Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Suche etwas wie XmlDocument nur performanter
preli
myCSharp.de - Member

Avatar #avatar-2343.png


Dabei seit:
Beiträge: 343
Herkunft: Österreich

Themenstarter:

Suche etwas wie XmlDocument nur performanter

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
gfoidl
myCSharp.de - Team

Avatar #avatar-2894.jpg


Dabei seit:
Beiträge: 6.860
Herkunft: Waidring

beantworten | zitieren | melden

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!"
private Nachricht | Beiträge des Benutzers
preli
myCSharp.de - Member

Avatar #avatar-2343.png


Dabei seit:
Beiträge: 343
Herkunft: Österreich

Themenstarter:

beantworten | zitieren | melden

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
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von preli am .
private Nachricht | Beiträge des Benutzers
Florian Reischl
myCSharp.de - Experte

Avatar #avatar-2880.jpg


Dabei seit:
Beiträge: 1.564
Herkunft: München

beantworten | zitieren | melden

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ß.
private Nachricht | Beiträge des Benutzers
kleines_eichhoernchen
myCSharp.de - Member

Avatar #avatar-2079.jpg


Dabei seit:
Beiträge: 3.971
Herkunft: Ursprünglich Vogtland, jetzt Much

beantworten | zitieren | melden

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...
private Nachricht | Beiträge des Benutzers
preli
myCSharp.de - Member

Avatar #avatar-2343.png


Dabei seit:
Beiträge: 343
Herkunft: Österreich

Themenstarter:

beantworten | zitieren | melden

@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
private Nachricht | Beiträge des Benutzers
Florian Reischl
myCSharp.de - Experte

Avatar #avatar-2880.jpg


Dabei seit:
Beiträge: 1.564
Herkunft: München

beantworten | zitieren | melden

Serialisierung wegen:
Zitat
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ß.
private Nachricht | Beiträge des Benutzers
gfoidl
myCSharp.de - Team

Avatar #avatar-2894.jpg


Dabei seit:
Beiträge: 6.860
Herkunft: Waidring

beantworten | zitieren | melden

Zitat
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!"
private Nachricht | Beiträge des Benutzers
Gelöschter Benutzer

beantworten | zitieren | melden

Zitat von gfoidl
Zitat
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:
Zitat
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.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal am .
Florian Reischl
myCSharp.de - Experte

Avatar #avatar-2880.jpg


Dabei seit:
Beiträge: 1.564
Herkunft: München

beantworten | zitieren | melden

Zitat von JAck30lena
Zitat von gfoidl
Zitat
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ß.
private Nachricht | Beiträge des Benutzers
preli
myCSharp.de - Member

Avatar #avatar-2343.png


Dabei seit:
Beiträge: 343
Herkunft: Österreich

Themenstarter:

beantworten | zitieren | melden

Zitat
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
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von preli am .
private Nachricht | Beiträge des Benutzers