2010-05-25 63 views
1

我在保存xml文檔對象,並將其保存在xml文件中,如下所示。保存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豆..關於如何實現這一目標的任何想法?

謝謝。

回答

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見furhter想法。

0

作爲堆棧器已經提到,普通的xml文件永遠不會(通常是?)沒有排序或排序。要對XML文檔進行排序,您可以在序列化之前對模型進行排序,或者創建/使用外部排序器來處理現有的xml文檔。

0

還應當指出的是,元素

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

是相同的:

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

屬性節點,不像文本節點和元素節點沒有順序。因此,出於XML的目的,您必須告訴它應該對哪個屬性進行排序。