#

XML Overdose

Wiedermal im Rahmen meiner Forecasting API suchte ich nach einer XML API und wurde von der gewaltigen Anzahl an dergleichen erschlagen. Wer die Wahl hat, hat die Qual…

XML APIs scheint es ja tatsächlich wie Sand am Meer zu geben. Entsprechend habe ich nun die Qual der Wahl, oder die Wahl der Qual?
Bereits aus früheren Erfahrungen kenne ich die eine oder andere XML API. DOM und SAX sind mir jedoch zu technisch und kompliziert aufgebaut, weswegen ich diese nicht gerne benutzen möchte. Von Apache gibt es die XMLBeans API, welche aus einer XSD ein Schema generiert und diese über eine Klassen API kapselt, so dass man als Programmierer nur noch mit Klassen zu tun hat. Jedoch frage ich mich, ob diese API nicht zu gro� und langsam ist. Au�erdem muss man, sobald sich die XSD ändert, die XML-Klassen neu kompilieren lassen. Eine weitere Alternative wäre JDOM, welche jedoch auch recht technisch aufgebaut ist.
Da ich nicht nur einfache Konfigurationen in XML speichern möchte, sondern auch ein einfaches Java<->XML Mapping benutzen möchte, um Komponenten etc. persistent zu Speichern, müsste ich mit der XMLBeans API jedoch noch einige Klassen zusätzlich schreiben, die dieses Mapping vornehmen. In diesem Sinne wären APIs, die ein solches Mapping unterstützen sehr hilfreich. Meines erachtens kann bspw. Digester so etwas machen. Jedoch müssen auch hier eigene Klassen mit den Regeln des Mappings geschrieben werden. Sinnvoller wäre es, das Mapping selbst ebenfalls durch XML festlegen zu können. Eine solche API bietet, soweit ich verstanden habe, auch Hybernate, auch wenn dessen primäres Anwendungsziel ein Java<->DB Mapping ist. Auch scheint es mir, als sei durch Hybernate mit Kanonen auf Spatzen geschossen. �hnlich wie Hybernate arbeitet die API Castor und bietet XML basiertes Java<->XML Mapping. Auch die API JIBIX bietet genau diese Features, wobei JIBIX eine sauberere und einfachere Syntax zu besitzen scheint. XStream hingegen scheint ganz ohne Mapping-Definitionen auszukommen. Es macht intensiven Gebrauch von der Reflection API und berücksichtigt auch transient Attribute. Gleicherma�en kommt die API Skaringa ebenfalls ohne Mappingdateien aus.
Tja, wie ich bereits fest stellte: Wer die Wahl hat, hat die Qual. Ich hätte kein Problem damit, spontan eine der APIs zu benutzen, wenn ich nicht wüßte, dass ich mir dann etliche Tage Codearbeit mit einer propiätären API versauen kann.

Falls jemand Tips oder Anregungen zu diesem Thema hat, bitte posten!

Tags:, , , , , , , ,

Leave a Reply »»

Note: All comments are manually approved to avoid spam. So if your comment doesn't appear immediately, that's ok. Have patience, it can take some days until I have the time to approve my comments.