2009-11-14 10 views
1

J'essaie de trier les documents XML en fonction de leurs nœuds. Qu'est-ce qu'une méthode de tri efficace?Comment trier les éléments XML en Java?

+0

Pouvez-vous nous montrer ce que votre document XML ressemble et comment vous le voulez trier? – dogbane

+0

Ecrivez-vous le document, ou vous avez un document prêt et devez le sortir? La structure est-elle plate? Voulez-vous trier uniquement les noeuds de niveau supérieur? Par quels critères - nom de noeud, attributs, contenu de noeud? – Bozho

+0

Je veux dire que je veux trier les éléments XML dans Java. Par exemple, dans une donnée bibliographique, le document xml est trié par éléments/nœuds "title". – thandar

Répondre

2

Je ne suis pas au courant d'un analyseur XML qui fournit un tri des éléments prêts à l'emploi, puisque les éléments XML n'ont pas d'ordre de tri naturel. En effet, dans la spécification XMl, l'ordre de tri des éléments est important. Par conséquent, aucun code analysant un fragment arbitraire de XML ne devrait faire d'hypothèses sur l'ordre des éléments.

Si vous avez besoin d'éléments triés, vous devrez analyser le document XML en utilisant votre analyseur XML favori et les trier vous-même. Vous pouvez également trier le document en utilisant XSLT.

2

Une alternative à l'approche XSLT est d'écrire votre propre méthode utilitaire qui trie les enfants d'un noeud spécifié dans l'ordre décroissant ou ordre croissant en utilisant un comparateur spécifié.

public static void sortChildNodes(Node node, Comparator comparator, boolean descending) { 

} 
0

Je recommande fortement que vous apprenez XSLT car il est très bien adapté pour manipuler des documents XML, y compris le tri, etc. Java a un bon support pour runing XSLT sur les fichiers et les structures en mémoire dans le cadre de l'exécution norme bibliothèque.

L'utilisation de

 <xsl:sort select="..."/> 

est bien décrit à http://www.xml.com/pub/a/2002/07/03/transform.html

+0

Merci pour votre suggestion, j'utilise java avec eclipse IDE. Alors, comment exécuter ces fichiers xsl. – thandar

+1

Nommez vos fichiers XSLT avec le type de fichier "XSL", c'est-à-dire "test.xsl". Ensuite, vous pouvez faire un clic droit et choisissez "Exécuter en tant que" -> "Transformation XSL" pour faire une transformation xslt. De la documentation je comprends que si vous changez le processeur XSLT dans le panneau de préférences XSL à Xalan vous pouvez même déboguer le processus XSLT. J'utilise Eclipse JEE. Il se peut qu'il ne soit pas disponible dans les autres éditions Eclipse. –

Questions connexes