XML DOM erstellen -> geht das nicht einfacher?


  • Administrator

    Hallo zusammen,

    Lerne aktuell C# und bin gerade dabei eines der ersten sinnvollen Anwendungen abzuschliessen. Die Daten sollen dabei als XML abgespeicher werden, .Net hat dazu soweit ich gesehen habe eine hervorragende Unterstützung.

    Als ich das XML Schreiben wollte, habe ich zuerst das ganze als DOM erstellen wollen, also über ein XmlDocument usw. usf.
    Das wurde aber schnell sehr komplex, wodurch ich weiter gesucht habe und den XmlWriter gefunden habe, womit ich mein Problem gut lösen konnte.

    Trotzdem aber, dass XmlDocument hat mich ein wenig überrascht. Das ist ja krank kompliziert, wenn man ein DOM bauen möchte. Vor allem auch immer wieder diese CreateXmlElement, CreateXmlAttribute, CreateXmlTextNode usw., welche alle über das Objekt des XmlDocuments laufen müssen. Wieso geht das nicht einfacher? Oder gibt es da bessere Alternativen? Ich mein sowas sollte doch ohne Probleme machbar sein:

    XmlDocument doc = new XmlDocument("1.0", "UTF-8");
    
    XmlElement root = new XmlElement("root-element");
    doc.AppendChild(root);
    
    root.AppendChild(new XmlElement("value", "text"));
    
    // usw.
    

    Grüssli



  • Schau dir mal Linq to XML an. Du bist nicht der erste dem das W3C XML DOM Gedöns aufn Senkel geht 😉


  • Administrator

    Talla schrieb:

    Schau dir mal Linq to XML an. Du bist nicht der erste dem das W3C XML DOM Gedöns aufn Senkel geht 😉

    W3C XML DOM ist sicher komplex und kann einem auf den Senkel gehen, aber man kann das auch einfacher umsetzen, als es im .Net gemacht wurde mit XmlDocument und co. XmlDocument erinnert mich stark an das Standard XML DOM aus Java, dort wurde es auch völlig schlecht umgesetzt, viel zu umständlich. Dafür hat man in Java dann JDOM, welches man unbedingt nicht in den Standard nehmen möchte, dabei ist es deutlich einfacher aufgebaut.

    LINQ to XML? Sowas gibt es auch? Lecker! Habe das Kapitel zu den LINQ Grundlagen erst kürzlich abgeschlossen, sehr spannendes Zeug. LINQ to SQL steht mir noch bevor, dass es LINQ to XML gibt, wusste ich aber nicht. Danke für die Info, werde mich mal schlau machen.

    Grüssli



  • Dravere schrieb:

    XmlDocument erinnert mich stark an das Standard XML DOM aus Java, dort wurde es auch völlig schlecht umgesetzt, viel zu umständlich.

    Ja und nein. Ja, die DOM Implementationen in Java und .Net sind sich ähnlich, da beide die W3C DOM Specifications für Level 1 und Level 2 erfüllen. Die beiden APIs in Java und .Net sind praktisch das gleiche, nur in der jeweiligen sprachspezifischen Ausprägung. Und nein, die sind deshalb nicht schlecht umgesetzt, oder umständlich - die sind einfach so vom W3C definiert.

    Dafür hat man in Java dann JDOM,...

    JDOM ist einfach ne Alternativimplementation eines DOMs mit bissle SAX Eigenschaften. Dieser efüllt aber nicht die W3C Spezifikationen. Nur deshalb kann er auch einfacher sein, und genauso ists mit Linq to XML. Das bietet auch ne Alternative Möglichkeit mit XML Files zu arbeiten.


  • Administrator

    Ehm, JDOM ist nicht nach dem W3C DOM Standard? *hat es gerade selber nochmals auf JDOM nachgelesen*
    Die bei W3C müssen ja spinnen, wenn die diesen Standard so kompliziert machen. Irgendwann muss ich das auch noch lesen. Nochmals danke! 🙂

    Grüssli



  • Und was spricht gegen den XMLSerializer von .NET? Da kann man sich eine schöne Klassen/Objektstruktur anlegen und die dann dem Serializer übergeben und wunderschön in eine XML rausballern?



  • Naja, ist nen ganz anderes Anwendungsgebiet. Es geht ja um die Editierung von vorhanden XML Files. Um dann mit dem XML Serializer arbeiten zu können, hieße es ja, man müsste für jedes einzulesenden XML File die entsprechenden Klassen entwerfen um in den entsprechenden Objekten die Daten abzulegen. Bissle umständlich wenn man viele verschieden aufgebaute Dateien hat. Und vor allem würde das ja implizieren, dass man weiß was für ne Struktur das XML File hat, welches man einliest. Das ist ja aber normal net der Fall.

    Wenn es um irgendwelche Konfigurationsdaten z.B. geht, wo die Struktur der Datei immer gleich ist, dann bietet sich natürlich auch die Serialisierung an.



  • Ahh natürlich, das hatte ich vollkommen außer Acht gelassen. Dann passt meine Lösung da natürlich nicht so wirklich drauf.


Anmelden zum Antworten