Hi,
ich möchte einen TreeList (ein TreeView von DevExpress) erstellen, welcher ziemlich viele Nodes enthält. Die Datenbasis ist bzw. soll dabei XML sein und bleiben. Stand jetzt ist jeder Node auch ein kleines XML im Filesystem auf einem Share. Dadurch gibt es automatisch auch eine Hierarchie durch die Unterverzeichnisse, jed nach dem wie tief das XML File liegt.
Allerdings hat sich dies als inperformant herausgestellt, je mehr Nodes es sind und werden.
Also soll das ganze jetzt konsolidiert werden. Nicht mehr viele kleine XML Files, sondern ein großes File soll es werden. Nun stellt sich mir die Frage, welche Technik ich für das Lesen bzw. Schreiben des Files verwenden soll.
System.Xml.Document habe ich bisher verwendet. Ist eigentlich schön einfach zum einlesen und zum wegschreiben. Hat aber, wenn man googlet wohl starke Performance-Einbussen wenn es große XML Files sind.
Xml.Linq wäre auch noch eine Idee. Habe ich aber noch nie gemacht und weiß daher nicht, ob es sich am Ende von der Performance her lohnt.
XMLReader / XMLWriter (incl. XMLTextReader und XMLTextWriter) liest das ganze der Reihe nach ein und soll schnell sein. Im Prinzip das Richtige für den Programmstart. Aber wie würde man dann das XML am besten editieren, ohne es komplett neu zu schreiben ?
CodeProjekt Nano XML: Soll wohl das schnellste sein, was das Einlesen betrifft. Könnte ich mir zumindest für den Programmstart vorstellen. Aber auch da stell ich mir die Frage, welche Technik für performantes Schreiben.
XMLSerializer: Eigentlich schön. Aber die Objekte dahinter sind zu dynamisch und komplex. Möchte ich nicht hernehmen
Außerdem stell ich mir die Frage, ob ich die Hierarchie der Ordner im XML abbilden soll, also die Elemente entsprechend tief verschachteln soll, oder ob ich gar keine Hierarchie im XML abbilde und die Hierarchie Ebene lieber als Pfadangabe in einem Attribut abspeichere. Ich könnte dann alle Nodes auf einmal in ein Array packen, diese dann entsprechend sortieren und daraufhin meinen Tree aufbauen.
Also um noch einmal kurz zusammenzufassen:
1. Welche Technik würdet ihr zum Einlesen großer XML Dateien verwenden
2. Welche Technik zum Schreiben bzw. Updaten des Files.
3. Wie würdet ihr das Programm benachrichtigen, wenn ein anderer User Änderung am XML vornimmt.
Wichtig ist, dass es schnell ist.
Danke Gruß Magic
ich möchte einen TreeList (ein TreeView von DevExpress) erstellen, welcher ziemlich viele Nodes enthält. Die Datenbasis ist bzw. soll dabei XML sein und bleiben. Stand jetzt ist jeder Node auch ein kleines XML im Filesystem auf einem Share. Dadurch gibt es automatisch auch eine Hierarchie durch die Unterverzeichnisse, jed nach dem wie tief das XML File liegt.
Allerdings hat sich dies als inperformant herausgestellt, je mehr Nodes es sind und werden.
Also soll das ganze jetzt konsolidiert werden. Nicht mehr viele kleine XML Files, sondern ein großes File soll es werden. Nun stellt sich mir die Frage, welche Technik ich für das Lesen bzw. Schreiben des Files verwenden soll.
System.Xml.Document habe ich bisher verwendet. Ist eigentlich schön einfach zum einlesen und zum wegschreiben. Hat aber, wenn man googlet wohl starke Performance-Einbussen wenn es große XML Files sind.
Xml.Linq wäre auch noch eine Idee. Habe ich aber noch nie gemacht und weiß daher nicht, ob es sich am Ende von der Performance her lohnt.
XMLReader / XMLWriter (incl. XMLTextReader und XMLTextWriter) liest das ganze der Reihe nach ein und soll schnell sein. Im Prinzip das Richtige für den Programmstart. Aber wie würde man dann das XML am besten editieren, ohne es komplett neu zu schreiben ?
CodeProjekt Nano XML: Soll wohl das schnellste sein, was das Einlesen betrifft. Könnte ich mir zumindest für den Programmstart vorstellen. Aber auch da stell ich mir die Frage, welche Technik für performantes Schreiben.
XMLSerializer: Eigentlich schön. Aber die Objekte dahinter sind zu dynamisch und komplex. Möchte ich nicht hernehmen
Außerdem stell ich mir die Frage, ob ich die Hierarchie der Ordner im XML abbilden soll, also die Elemente entsprechend tief verschachteln soll, oder ob ich gar keine Hierarchie im XML abbilde und die Hierarchie Ebene lieber als Pfadangabe in einem Attribut abspeichere. Ich könnte dann alle Nodes auf einmal in ein Array packen, diese dann entsprechend sortieren und daraufhin meinen Tree aufbauen.
Also um noch einmal kurz zusammenzufassen:
1. Welche Technik würdet ihr zum Einlesen großer XML Dateien verwenden
2. Welche Technik zum Schreiben bzw. Updaten des Files.
3. Wie würdet ihr das Programm benachrichtigen, wenn ein anderer User Änderung am XML vornimmt.
Wichtig ist, dass es schnell ist.
Danke Gruß Magic