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 plaidant 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 classe sont documentées; que voulez-vous passer à run() comme le String mode
paramètre?)
Exigences:
La bibliothèque doit faire de base XML manipulation plus facile que c'est quand à l'aide de pure JDK (javax.xml
et org.le w3c.dom
paquets). Des choses comme ceci:
- De 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 temps. 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. 🙂
- Il semble qu'ils ont perdu la dom4j.org de domaine (peut-être un autre signe que l'on doit, en effet, le remplacer par quelque chose...) – le site est encore disponible à l'adresse dom4j.sourceforge.net bien que.
- Vérifiez quelques articles sur le sujet: stackoverflow.com/questions/373833/best-xml-parser-for-java et stackoverflow.com/questions/25614/.... Aussi belle note à propos de jdom/dom4j/xom est ici: lists.xml.org/archives/xml-dev/200410/msg00492.html
- Ooh, juste remarqué qu'il y est enfin un dom4j 2.0 alpha communiqué: sourceforge.net/projects/dom4j/files/dom4j-2.0.0-ALPHA-2 (Ils n'ont toujours pas récupéré leurs dom4j.org de domaine si.) Quelqu'un l'a testé?
- Non, je n'avais pas entendu parler de lui... en y postant une réponse complète à ce sujet si vous pensez que c'est une bonne dom4j de remplacement prévus dans la question
- Une autre option est que vous pouvez toujours aider à la dom4j de l'équipe de faire une meilleure dom4j. Prenez une fourchette et de plonger et de soumettre des patchs.
- même dom4j.sourceforge.net semble disparu.
- Maintenant dom4j.sourceforge.net redirige vers dom4j.github.io, qui fonctionne (et qui est extrêmement simpliste).
Vous devez vous connecter pour publier un commentaire.
Sûr, XOM 🙂
- Je utiliser 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.
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 🙂
Auteur a également écrit sur Quel est le problème avec XML Api (et comment les corriger). (En gros, les raisons pour lesquelles XOM existe, en premier lieu)
Ici est également de 5-partie Artima entretien avec l'auteur à propos de XOM, où ils parlent de quel est le problème avec XML Api, Le Bon, le Mauvais, et le DOM, Un Examen de la Conception de JDOM, Les leçons Tirées de JDOM et enfin Principes de conception et de XOM.
Element.setAttribute(name, value)
,Element.setText(string)
, des habitudes des visiteurs (voir lists.ibiblio.org/pipermail/xom-interest/2010-March/004076.html), mieux StAX / TrAX prise en charge des API), qui dom4j est.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: le Pratique XML bibliothèque est une collection de classes utilitaires qui font qu'il est plus facile de travailler avec le 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.
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:
C'est fait pour Java 5 et il est facile de créer un objet itérable
les éléments sélectionnés:
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).
De la déclaration de mission:
C'est à peu près mon expérience - assez intuitif de navigation de nœud arbres.
- Je utiliser 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.
Je vais ajouter à la réponse de @kdgregory en disant: pourquoi ne pas JAXB?
Avec quelques annotations de son assez facile de modéliser la plupart des documents XML. Je veux dire, votre probablement à analyser les choses et de les mettre dans un objet de droit?
JAXB 2.0 est intégrée au JDK 1.6 et contrairement à de nombreux autres builtin javax bibliothèques celui-ci est assez bonne (Kohusuke travaillé sur elle de sorte que vous savez c'est bon).
Dans un projet récent, j'ai fait un peu d'analyse XML, et finit par les utiliser Cadre Simple, recommandé par un collègue.
J'ai été très heureux avec elle à la fin. Il utilise une annotation basée sur l'approche de la cartographie des éléments et attributs XML à des classes Java et des champs.
Correspondant de code Java:
C'est assez différent de dom4j ou XOM. Vous éviter d'écrire idiot, boilerplatey XML code de gestion, mais au début, vous aurez probablement taper la tête contre un mur en essayant d'obtenir les annotations droit.
(C'est moi qui l'ai posé cette question il y a 4 ans. Alors que XOM semble décent et très populaire dom4j de remplacement, je ne viens pas à adhérer pleinement à elle. Curieux que personne n'ait mentionné Cadre Simple ici. J'ai décidé de remédier à cela, comme je l'avais probablement l'utiliser de nouveau.)
Dans notre projet, nous sommes à l'aide de http://www.castor.org/ mais juste pour des petits fichiers XML. Il est vraiment facile à apprendre, juste besoin d'un mappage de fichier XML (ou none si les balises XML correspondre parfaitement les attributs de classe) et c'est fait. Il prend en charge les auditeurs (comme les rappels) pour exécuter un traitement supplémentaire. Les inconvénients: il n'est pas un Java EE standard comme JAXB.
vous pouvez essayer de JAXB, avec les annotations de son très pratique et simple à faire: Java Architecture for XML Binding.
Je suis parfois à l'aide de Jericho, qui est principalement analyseur HTML, mais peut analyser n'importe quel XML comme structure.
Bien sûr, c'est que pour la plus simple des opérations XML, tels que la recherche d'étiquettes avec le prénom, le parcours de la structure, en remplacement de balises et d'attributs, mais ne sont-ce pas la plupart des cas d'utilisation?
Pour la construction de XML documetns, je suggère xmlenc. Il est utilisé dans cassandra.