Я использую библиотеку Simple (http://simple.sourceforge.net/)) для маршаллизации / демаршаллизации XML-данных в Java. Для некоторых из моих более сложных структур данных мне нужно написать свои собственные конвертеры. Например, скажем, у меня есть List<List<String>>
что мне нужно сделать маршалл. Я написал следующее:
class WorldObject {
@Element(name="vector-names")
@Convert(ListListConverter.class)
private List<List<String>> vectorNames;
/** Constructor and other details ... **/
}
Наряду с ListListConverter (на данный момент я оставил демаршаллер):
class ListListConverter implements Converter<List<List<String>>> {
@Override
public List<List<String>> read(InputNode node) throws Exception {
// stub
return null;
}
@Override
public void write(OutputNode node, List<List<String>> value)
throws Exception {
node.setName("list-list-string");
for (List<String> list : value) {
OutputNode subList = node.getChild("list-string");
for (String str : list) {
OutputNode stringNode = subList.getChild("string");
stringNode.setValue(str);
}
subList.commit();
}
node.commit();
}
}
Эта установка отлично работает и выдает XML, который я хочу. Однако я хотел бы получить доступ к полю name
аннотации @Element
, чтобы я мог присвоить тегам указанное имя (в данном случае "vector-names"
), а не имя по умолчанию ("list-list-string"
). Вот как маршаллинг работает для всех типов, которые Simple обрабатывает из коробки, поэтому должен быть способ доступа к этим данным из пользовательского конвертера.
Как мне это сделать?