76 votes

Ce que Java XML de la bibliothèque de vous recommander (à remplacer dom4j)?

Je suis à la recherche de quelque chose comme dom4j, mais sans dom4j de verrues, comme incorrecte ou manquante de la documentation et de l'apparente absence de l'état du développement.

Contexte: j'ai été en utilisant et en préconisant dom4j, mais ne se sentent pas tout à fait raison à ce sujet parce que je sais que la bibliothèque est loin d'être optimale (exemple: voir comment les méthodes de XSLT liées à la feuille de style de la classe sont documentées; que voulez-vous passer à run() comme l' String mode paramètre?)

Exigences: La bibliothèque doit faire de base XML manipulation plus facile que lors de l' utilisation de pur JDK (javax.xml et org.w3c.dom des paquets). Des choses comme ceci:

  • Lire un document XML (à partir du fichier ou de Chaîne de caractères) dans un objet, facile à parcourir et manipuler le DOM, faire des requêtes XPath et exécuter XSLT contre elle.
  • Construire un document XML dans votre code Java, ajouter des éléments et des attributs et des données, et enfin rédiger le document dans un fichier ou de la Chaîne.

J'aime vraiment ce dom4j promesses, en fait: "facile à utiliser, bibliothèque open source pour travailler avec XML, XPath et XSLT [...] avec un support complet pour les DOM, SAX et JAXP." Et à venir, dom4j 2.0 ne prétendre tout régler: la pleine utilisation de Java 5 et ajouter des documents manquants. Mais malheureusement, si vous regardez de plus près:

Avertissement: dom4j 2.0 est en pré-alpha scène. Il est probable qu'il ne peut pas être compilé. Dans le cas où il peut être compilé au hasard, il est probable qu'il ne peut pas s'exécuter. Dans le cas où il fonctionne de temps en temps il peut exploser soudainement. Si vous souhaitez utiliser dom4j, vous voulez la version 1.6.1. Vraiment.

...et le site web a dit que pour un long moment. Donc, il y a une bonne alternative à dom4j? Veuillez fournir une justification pour votre préféré bibliothèque, au lieu de simplement le dumping des noms et des liens. :-)

53voto

Peter Štibraný Points 17507

Bien sûr, XOM :-)

XOM est conçu pour être facile à apprendre et facile à utiliser. Il fonctionne très droite-forwardly, et a une très peu profonde de la courbe d'apprentissage. En supposant que vous êtes déjà familier avec le XML, vous devrait être en mesure de se lever et courir avec XOM très rapidement.

J'utilise XOM depuis plusieurs années maintenant, et j'aime toujours beaucoup. Facile à utiliser, l'abondance de la documentation et des articles sur le web, API ne change pas entre les versions. 1.2 a été publié récemment.

XOM est la seule API XML qui ne fait pas de compromis sur l'exactitude. XOM seulement accepte d'espace de noms XML bien formé les documents, et permet uniquement de créer l'espace de noms XML bien formé documents. (En fait, c'est un peu plus strictes que cela: il fait garantit que tous les documents sont rond-trippable et bien définie XML infoset.) XOM gère votre XML pour vous n'avez pas à. Avec XOM, vous pouvez l'accent sur la valeur unique de votre d'application, et de la confiance XOM pour obtenir le XML droit.

Découvrez la page web http://www.xom.nu/ pour la FAQ, livre de cuisine, conception de la justification, etc. Si seulement tout a été conçu avec beaucoup d'amour :-)

L'auteur a également écrit à propos de Ce qui est Erroné avec XML Api (et comment les corriger). (En gros, les raisons pour lesquelles XOM existe, en premier lieu)

Ici aussi 5-partie Artima entretien avec l'auteur à propos de XOM, où ils parlent de ce qui est erroné avec XML Api, le Bon, Le Mauvais, et dans les DOM, UN Examen de la Conception de JDOM, les Leçons Tirées de JDOM et, enfin, les Principes de Conception et de XOM.

17voto

kdgregory Points 21849

Celui qui est intégré dans le JDK ... avec quelques ajouts.

Oui, c'est pénible à utiliser: il est modélisé d'après le W3C spécifications qui ont été clairement conçu par le comité. Toutefois, il est disponible partout, et si vous vous installez sur elle, vous ne courez pas dans les "j'aime Dom4J," "j'aime JDOM," "j'aime StringBuffer" des arguments qui viennent de bibliothèques tierces. D'autant que ces arguments peuvent se transformer en différents morceaux de code à l'aide de différentes bibliothèques ...

Cependant, comme je l'ai dit, je ne améliorer légèrement: la Pratique XML library est une collection de classes utilitaires qui font qu'il est plus facile de travailler avec les DOM. Autre que l'expression XPath, wrapper, il n'y a rien de complexe ici, juste un tas de routines que j'ai trouvé moi-même la réécriture de tous les emplois.

10voto

golimpio Points 501

J'ai été en utilisant XMLTool pour le remplacement de Dom4j, et ça fonctionne assez bien.

Outil XML utilise Couramment l'Interface de modèle pour faciliter XML manipulations:

XMLTag tag = XMLDoc.newDocument(false)
   .addDefaultNamespace("http://www.w3.org/2002/06/xhtml2/")
   .addNamespace("wicket", "http://wicket.sourceforge.net/wicket-1.0")
   .addRoot("html")
   .addTag("wicket:border")
   .gotoRoot().addTag("head")
   .addNamespace("other", "http://other-ns.com")
   .gotoRoot().addTag("other:foo");
System.out.println(tag.toString());

C'est fait pour Java 5 et il est facile de créer un objet itérable les éléments sélectionnés:

for (XMLTag xmlTag : tag.getChilds()) {
   System.out.println(xmlTag.getCurrentTagName());
}

6voto

Steve B. Points 23227

J'ai toujours aimé jdom. Il a été écrit pour être plus intuitive que DOM l'analyse(et SAX analyse semble toujours maladroit de toute façon).

À partir de l'énoncé de mission:

Il n'y a pas de raison convaincante pour un API Java pour manipuler du XML pour complexe, délicate, pas intuitif, ou un douleur dans le cou. JDOMTM est à la fois Java et Java optimisé. Il se comporte comme Java, il utilise Java les collections, il est tout à fait naturel API pour le courant de développeurs Java, et il fournit un faible coût d'entrée pour à l'aide de XML.

C'est à peu près mon expérience - assez intuitif de navigation de nœud arbres.

5voto

IAdapter Points 15876

J'utilise XStream, c'est une simple bibliothèque de sérialiser des objets au format XML et d'en revenir.

il peut être annotation-driven (comme JAXB), mais il est très simple et facile à utiliser l'api et vous pouvez même générer du JSON.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X