Создать XML с коллекцией коллекций - PullRequest
1 голос
/ 29 февраля 2012

Я хотел бы создать коллекцию различных коллекций. Все с общим родителем и каждый с @XMLRootElement:

@XmlRootElement("as")
public class As extends DTOs {
    @XmlElement("a")
    private Collection collection;
    //
}

@XmlRootElement("bs")
public class Bs extends DTOs {
    @XmlElement("b")
    private Collection collection;
    //
}

@XmlRootElement("b")
public class B extend DTO {
}

public class DTOs extends DTO {
}

public class Element Extend DTO{

    private Collection collection;

    @XmlElementRef
    getCollection() {
        return collection;
    }
}

Какими должны быть аннотации в Element для создания:

<as>
     <a>
         <name>
     </a>
     <bs>
         <b><foo/></b>
     <bs>
     <cs>
         <c/>
     </cs>
</as>

Моя первая попытка была @XmlAnyElement(lax=true), но это исключение из-за "Нелегальной аннотации". Я полагаю, это произошло из-за столкновения с @XmlElement в бетонных объектах.

При добавлении @XmlElementRef он жалуется во время выполнения с

невозможно маршалировать тип "com.example.Bs" в качестве элемента, так как отсутствует аннотация @XmlRootElement

Я думаю, это может быть связано с наследством.

Ответы [ 2 ]

1 голос
/ 01 марта 2012

Если у вас общий корень, вы можете использовать @XmlElementRef:

Без общего корня вы можете использовать @XmlAnyElement (lax = true):

0 голосов
/ 29 февраля 2012

Вы должны определить схему и использовать эту схему для генерации классов JAXB. С этими классами вы можете выполнять преобразование в и из XML.

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