我正在保存一个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 ..关于如何实现这一点的想法?
感谢。
答案 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的目的,您必须告诉它应该对哪个属性进行排序。