Я использую Castor для записи карты идентификаторов пользователя с временными интервалами.Я использую его для сохранения и возобновления прогресса в длительной задаче и пытаюсь сделать XML максимально компактным.Моя карта состоит из строки userID's в класс, который содержит временные метки интервала, а также дополнительные временные данные, которые мне не нужно сериализовать.
Я могу использовать отображение вложенных классов:
...
<field name="userIntervals" collection="map">
<bind-xml name="u">
<class name="org.exolab.castor.mapping.MapItem">
<field name="key" type="string"><bind-xml name="n" node="attribute"/></field>
<field name="value" type="my.package.TimeInterval"/>
</class>
</bind-xml>
</field>
...
<class name="my.package.TimeInterval">
<map-to xml="ti"/>
<field name="intervalStart" type="long"><bind-xml name="s" node="attribute"/></field>
<field name="intervalEnd" type="long"><bind-xml name="e" node="attribute"/></field>
</class>
...
И получить вывод, который выглядит следующим образом:
<u n="36164639"><value s="1292750896000" e="1292750896000"/></u>
Мне бы хотелось, чтобы имя, начало и конец пользователя находились в одном узле, подобном этому.
Но мне кажется, что я не могу найти его, поэтому атрибуты start и end в значении находятся в том же узле, что и ключ.Любые идеи будут с благодарностью.