2010-05-25 4 views
1

Je sauvegarde un objet document xml et il est enregistré dans un fichier xml comme indiqué ci-dessous.Enregistrer l'objet xml pour que les éléments soient triés dans le fichier xml enregistré

<author name="tom" book="Fun-II"/> 
<author name="jack" book="Live-I"/> 
<author name="pete" book="Code-I"/> 
<author name="jack" book="Live-II"/> 
<author name="pete" book="Code-II"/> 
<author name="tom" book="Fun-I"/> 

plutôt que je veux trier le contenu dans l'objet de document afin que lorsque je persiste l'objet il est enregistré en regroupant les auteurs puis le nom du livre ci-dessous:

<author name="jack" book="Live-I"/> 
<author name="jack" book="Live-II"/> 
<author name="pete" book="Code-I"/> 
<author name="pete" book="Code-II"/> 
<author name="tom" book="Fun-I"/> 
<author name="tom" book="Fun-II"/> 

J'utilise les haricots apache xml .. des idées sur la façon d'y parvenir?

merci.

Répondre

3

XML n'a pas ordre de tri, vous pouvez transformer un fichier XML en utilisant XSLT Quelque chose comme ça:

<xsl:for-each select="author" order-by="+ name"> 
<tr> 
    <td><xsl:value-of select="@name"/></td> 
    <td><xsl:value-of select="@book"/></td> 
</tr> 
</xsl:for-each> 

Voir aussi Sorting in XSLT des idées occasion de nouvelles.

0

En tant qu'empileur déjà mentionné, les documents XML simples ne sont jamais (en général?) Triés ou triés. Pour trier les documents XML, vous pouvez soit trier le modèle avant de le sérialiser, soit créer/utiliser un trieur externe pour traiter les documents xml existants.

0

Il convient également de noter que l'élément

<author name="pete" book="Code-I"/> 

est identique à:

<author book="Code-I" name="pete"/> 

nœuds d'attribut, contrairement à des nœuds de texte et les nœuds d'éléments ne sont pas ordonnés. Ainsi, pour les besoins de XML, vous devez indiquer sur quel attribut il doit trier.

Questions connexes