2009-04-15 8 views
15

J'ai traité quelques API XML en Java, mais je ne comprends pas bien tous les frameworks disponibles en Java pour traiter le XML à quelque fin que ce soit (par exemple JAXB, JAXP, Xerces, StAX , Castor, etc.). Quelqu'un peut-il mettre en évidence les API XML Java les plus populaires et donner une description rapide de ce à quoi ils sont destinés? Je serais également intéressé par les API qui sont utilisées de nos jours, et qui pourraient être considérées comme obsolètes.API XML Java

+0

Avez-vous regardé vtd-xml? –

+0

La plupart de vos questions sont traitées, je pense, dans les premières questions de StackOverflow: - [API Java pour XML] (http://stackoverflow.com/questions/678894/) - [Sérialisation XML en Java?] (Http://stackoverflow.com/questions/35785/) - [Meilleur analyseur XML pour Java] (http://stackoverflow.com/questions/373833/) - [Manière simple de faire du XML en Java] (http: // stackoverflow .com/questions/528664 /) Ce type de recherche est actuellement plus facile à faire depuis Google Eddie

Répondre

16
  • JAXP est une « API connectables », un ensemble d'interfaces et classes abstraites avec une « implémentation de référence » par Sun, mais il utilise l'approche de l'usine pour vous permettre d'échanger sur une implémentation différente (par exemple, un cela pourrait être plus rapide dans certains types d'utilisations) sans avoir à changer votre code, juste par changing a system property. Il comprend DOM, SAX, StAX et XSLT. Sun a une bonne comparison page pour DOM/SAX/StAX. Je recommande le O'Reilly book on Java XML, vous pouvez le trouver utilisé à un prix décent, mais assurez-vous que vous avez la dernière édition (3e).

  • JAXB est un moyen de lier des classes Java à des fichiers XML, en utilisant un schéma XML. (Vous pouvez générer automatiquement les classes Java à l'aide d'un schéma, ou générer automatiquement le schéma à l'aide de classes java.J'ai utilisé le premier mais pas le dernier.) Cela peut être utile si vos fichiers XML ont un schéma bien connu. vouloir traiter les données dans un fichier XML comme s'il s'agissait d'objets dans une classe Java. Vous faites très peu d'appels d'API, juste un ou deux pour rassembler les données de Java en XML, ou démultipliez les données de XML en Java. Si vos fichiers XML sont plus libres et/ou que vous voulez utiliser XPATH pour trouver des choses, il est probablement préférable d'utiliser l'une des API JAXP.

  • Castor est une alternative à JAXB; Je ne l'ai pas utilisé mais il y a un comparison page on IBM's website.

  • Xerces est la famille de packages de traitement XML d'Apache. Il en inclut un pour Java, dont la plupart peuvent être utilisés via JAXP comme implémentation alternative pour l'implémentation de référence de Sun. Il inclut également des bibliothèques pour C++ et Perl.

+7

L'API Java XML résume tout ce que je déteste de l'architecture maladroite. Je ne veux pas d'une "architecture connectable": je veux juste une bibliothèque d'analyse standard, rapide et correcte, prête à l'emploi ... Imagine que String soit une "architecture connectable"! –

+1

@NeilCoffey Je pense que la manipulation de XML est une tâche un peu plus complexe que de traiter une liste ordonnée de caractères. – vbence

+1

C'est plus complexe ... mais le but d'une API est de ne pas exposer une telle complexité (ou du moins, n'exposer que le niveau de complexité nécessaire) au programmeur d'application. –