сохранить объект XML, чтобы элементы были отсортированы в сохраненном файле XML - PullRequest
1 голос
/ 25 мая 2010

Я сохраняю объект документа 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 ]

3 голосов
/ 25 мая 2010

XML не имеет порядка сортировки, вы можете преобразовать XML с помощью XSLT Примерно так:

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

См. Также Сортировка в XSLT для дальнейших идей.

0 голосов
/ 25 мая 2010

Следует также отметить, что элемент

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

Идентично:

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

Узлы атрибутов, в отличие от текстовых узлов и узлов элементов, не имеют порядка. Таким образом, для целей XML вы должны указать ему, по какому атрибуту он должен сортироваться.

0 голосов
/ 25 мая 2010

Как уже упоминалось в укладчике, простые XML-документы никогда (обычно?) Не сортируются и не сортируются. Чтобы отсортировать документы XML, вы можете либо отсортировать модель перед сериализацией, либо создать / использовать внешний сортировщик для обработки существующих документов XML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...