Hallo,
ich entwickel seit einer Weile an einem dialogbasierten Editor für einen XML Datensatz. Dabei muss ich auf Dom setzen und die XML mit einer DTD abgleichen (wofür ich die DTDParser Bibliothek benutze).
Darüber habe ich ein abstrakteres Datenmodell gesetzt, welches quasi die Beschreibung und die XML Datei vereint. Z.B. gibt es im Datenmodell ein Listen-Elementen, wenn ein solches in der DTD deklariert ist, mit direktem Zugriff auf die in der Liste enthaltenen Nodes (dies gibt es ja in der XML Datei selbst nicht - dort ist eine Liste einfach ein Folge von Elementen, was sich schlecht verarbeiten lässt).
Nun die ganz dumme Frage: geht das nicht auch eleganter? Derartige Problemstellungen wirds ja schon tausendfach gegeben haben und jedesmal so ein Modell bauen ist ja sicher nicht zielführend.
Ich schau mir gerade nochmal XMLBeans und JAXB an, womöglich hilft mir das ja weiter.
Nochmal die must-have Anforderungen:
- Operationen auf Dom Tree - also direkt auf den Nodes, kein Serialisieren erst beim Speichern
- DTD kompatibel
ich entwickel seit einer Weile an einem dialogbasierten Editor für einen XML Datensatz. Dabei muss ich auf Dom setzen und die XML mit einer DTD abgleichen (wofür ich die DTDParser Bibliothek benutze).
Darüber habe ich ein abstrakteres Datenmodell gesetzt, welches quasi die Beschreibung und die XML Datei vereint. Z.B. gibt es im Datenmodell ein Listen-Elementen, wenn ein solches in der DTD deklariert ist, mit direktem Zugriff auf die in der Liste enthaltenen Nodes (dies gibt es ja in der XML Datei selbst nicht - dort ist eine Liste einfach ein Folge von Elementen, was sich schlecht verarbeiten lässt).
Nun die ganz dumme Frage: geht das nicht auch eleganter? Derartige Problemstellungen wirds ja schon tausendfach gegeben haben und jedesmal so ein Modell bauen ist ja sicher nicht zielführend.
Ich schau mir gerade nochmal XMLBeans und JAXB an, womöglich hilft mir das ja weiter.
Nochmal die must-have Anforderungen:
- Operationen auf Dom Tree - also direkt auf den Nodes, kein Serialisieren erst beim Speichern
- DTD kompatibel