保存xml对象,以便元素在保存的xml文件中按排序顺序排列

时间:2010-05-25 05:33:36

标签: java xml sorting

我正在保存一个xml文档对象,它将保存在xml文件中,如下所示。

<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"/>

相反,我想对文档对象中的内容进行排序,以便当我持久保存对象时,通过对作者进行分组来保存,然后按如下方式预订名称:

<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"/>

我使用apache xml bean ..关于如何实现这一点的想法?

感谢。

3 个答案:

答案 0 :(得分:3)

XML没有排序顺序,您可以使用XSLT转换XML 这样的事情:

<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>

另请参阅Sorting in XSLT了解更多想法。

答案 1 :(得分:0)

正如堆栈器已经提到的那样,普通的xml文档永远不会(通常是?)没有排序或排序。要排序xml文档,您可以在序列化之前对模型进行排序,也可以创建/使用外部排序器来处理现有的xml文档。

答案 2 :(得分:0)

还应该注意元素

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

与:

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

属性节点,与文本节点和元素节点不同,没有排序。因此,出于XML的目的,您必须告诉它应该对哪个属性进行排序。