2010-11-16 7 views
2

Я использую свой собственныйiterable структуры - различные BinaryTrees. Могу ли я просто их маршалировать? Это довольно легко для маршала f.e. java.util.List, но в моем случае это абсолютно неприемлемо. Мне нужно использовать свои собственные структуры, без внутренних контейнеров бы то ни было - только цепь памяти (root.leftson.rightson и т.д.)Могу ли я объединить свои собственные структуры данных с JAXB?

Других слов, можно Маршалл структуры, как:

class BinaryTree<T> implements Iterable<T>?

Edit: структура должна выглядеть (для BinaryTree<Person>):

<persons> 
<person> 
    <name>John</name> 
    <surname>Black</name> 
</person> 
<person> 
    <name>Joe</name> 
    <surname>Blue</name> 
</person> 
</persons> 

Так что, когда я добавить аннотацию к моей структуры, как:

@XmlElement 
private BinaryTree<Person> persons = new BinaryTree<Person>(); 
public BinaryTree<Person> getPersons() { return persons; } 

, он просто создает пустой элемент, как <persons />. Я также пробовал аннотации @XmlElementWrapper, но он не будет принимать пользовательскую структуру (должен быть сбор или что-то подобное). Было бы неплохо иметь @IterableElement или что-то :)

+0

Вам нужно спросить себя: «Как бы эта структура была представлена ​​в XML?». – skaffman

+0

Я точно знаю это, проверяю правку. – Xorty

+0

Что редактируете? Я не вижу ничего относительно вашей желаемой структуры XML. – skaffman

ответ

2

Существует руководство по использованию собственных методов сортировки в javadoc XMLAdapter. Таким образом, используя аннотацию @XMLJavaAdapter, вы можете точно определить, как вы хотите маршалировать свой класс.

+0

В моем блоге также есть пример использования XML-адаптера: http://bdoughan.blogspot.com/2010/07/xmladapter-jaxbs-secret-weapon.html –

+0

Выглядит хорошо, я Посмотрим на это немного ближе. Но я в эпическом спешке, поэтому на этот раз я выбрал DOM. – Xorty

Смежные вопросы