La meilleure façon de lire les données XML en Java
De certains de nos autres applications que je reçois fichier XML.
Je veux lire ce fichier XML de nœud en nœud et le nœud du magasin valeurs dans la base de données pour une utilisation ultérieure.
Alors, quelle est la meilleure façon/API pour lire fichier XML et récupérer les valeurs de nœud à l'aide de Java?
"le meilleur" dépend d'autres facteurs comme l'utilisation de la mémoire etc.
La caisse de ma réponse à une question similaire: stackoverflow.com/questions/7172212/...
La caisse de ma réponse à une question similaire: stackoverflow.com/questions/7172212/...
OriginalL'auteur Romani | 2011-08-25
Vous devez vous connecter pour publier un commentaire.
dom4j et jdom sont assez facile à utiliser (sans tenir compte de l'exigence de "meilleur" pour un moment 😉 )
Voté comme j'aime jdom il est agréable et facile, l'a beaucoup utilisée il y a longtemps. Manquer :(, maintenant c'est plus "entreprise" XML cadres, certes, j'ai fais beaucoup plus automatisé et plus complexe de traitement de maintenant.
Digulla - tu me fais vieux, j'ai vraiment utilisé fréquemment dirait qu'il a été années/décennies 😉
JDOM est-il mort? Je ne savais pas cela. L'utilise depuis un peu, mais est resté loin d'elle depuis environ un an ou deux parce que je vais pour l'efficacité de mémoire de solutions. En parlant de cela, j'avais toujours conseiller à l'encontre de toute DOM-comme solution à moins que vous vraiment besoin de la totalité de l'arborescence XML en mémoire.
oui, JDOM est assez simle à utiliser.
OriginalL'auteur Andreas_D
Il existe différents outils pour cela. Aujourd'hui, je préfère les deux:
Ici est une bonne comparaison entre le Simple et JAXB: http://blog.bdoughan.com/2010/10/how-does-jaxb-compare-to-simple.html
Personnellement, j'aime Simple un peu mieux parce que le soutien par Niall est excellente, mais JAXB (comme expliqué dans le billet de blog ci-dessus) peut produire un meilleur rendement avec moins de code.
StAX est un plus de base de l'API qui vous permet de lire des documents XML qui ne rentre pas dans la RAM (ni Simple ni JAXB permet de lire un document XML "par objet" - ils vont toujours essayer de charge tout en mémoire vive à la fois).
JAXB n'est pas tellement "ont" un streaming API, comme l'utilisation d'un StAX. Il fonctionne juste trouver autonome. Comme une question de fait, à moins que le demandeur XML a une structure un peu complexe, StAX serait probablement faire tout aussi bien pour son travail.
Simple XML utilise StAX, ce qui est tout aussi performante que SAX, de sorte qu'il peut gérer de gros fichiers très bien.
Merci, j'ai amélioré ma réponse.
OriginalL'auteur Aaron Digulla
Je voudrais des conseils pour un simple outil XML si vous pouvez gérer.
Par exemple, moi et mes collèges ont introduit XML complexes de cadres qui a fonctionné comme un charme au premier abord.
Ensuite, vous oubliez le cadre, vous avez des fichiers de compilation, juste pour le mappage XML pour les haricots, vous avez annoté de haricots, de vous fournir une nouvelle barrière pour les nouveaux développeurs à votre projet. Vous perdez beaucoup de votre liberté de refactoriser.
À la fin vous serez désolé que vous avez utilisé le complexe de gagner du temps dans le début et j'ai vu plus d'une fois que les cadres ont été jetés dans la refactorisation parce que tout le monde avait un sentiment négatif à ce sujet bien qu'ils sont grands à papier.
Donc réfléchir à deux fois sur l'introduction XML complexes cadres si vous utilisez rarement. Si vous et votre équipe, à les utiliser assez souvent alors qu'ils sont la voie à suivre.
OriginalL'auteur Farmor
Je suggère l'utilisation de XPath. Xalan est déjà inclus dans le JDK (pas externe pots nécessaire) et il s'adapte à vos besoins, c'est à dire une itération à travers les nœuds d'élément (je présume), et le stockage de leurs valeurs de texte. Par exemple:
Cet exemple renvoie une liste de tous les éléments racines et imprimer l'élément correspondant de nom et de contenu de texte. S'adapter à l'expression xpath pour s'adapter à vos besoins.
OriginalL'auteur forty-two
Essayer Apache Xerces. Il est mature et robuste. Ces alternatives va faire aussi, juste être sûr de ne pas rouler votre propre mise en œuvre.
Digulla quel serait votre suggestion ?
Voir ma propre réponse.
OriginalL'auteur Oh Chin Boon
En contournant ensemble la question de l'analyse du xml et de stocker les valeurs dans une base de données, j'aimerais remettre en question la nécessité de faire de la ci-dessus. La plupart des bases de données peut gérer xml de nos jours, de sorte qu'il peut être stocké en quelque sorte dans une table sans la nécessité de l'analyse du contenu; le contenu d'une telle xml au sein d'une colonne dans une table peut généralement être interrogé par l'utilisation de " xmlselect()' et des fonctions similaires.
Penser à ce sujet pendant une seconde; si dans un futur proche ou lointain le contenu du fichier xml que vous obtenez à partir de l'autre modification de l'application, vous aurez beaucoup de changements à faire. Si il change souvent, il va devenir un cauchemar.
Cheers,
Wim
Désolé mais je ne comprends pas. Vous dites que vous demandez le xml à partir d'une autre application. Ce qui vous empêche de l'enregistrer dans la base de données en tant que telle?
OriginalL'auteur Wivani
Essayer XStream, celui-ci est vraiment simple.
OriginalL'auteur Infeligo
bien,j'ai utilisé stax pour analyser une assez grande de nœuds XML, qui consomme moins de mémoire que les Dom et sax, quand on sait qu'il est du style à tirer des données XML. Stax pourrait être un bon choix pour les grandes données XML nœuds.
OriginalL'auteur David