Unmarshalling элемент выбора схемы XML для разделения списков - PullRequest
1 голос
/ 31 января 2012

Возможно ли, чтобы такая схема, как:

<xs:complexType name="GroupType">
    <xs:sequence>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element type="PageType" name="Page" minOccurs="0" maxOccurs="unbounded"/>           
            <xs:element type="GroupType" name="Group" minOccurs="0" maxOccurs="unbounded"/>                
            <xs:element type="ResourcesType" name="Resources" minOccurs="0" maxOccurs="1"/>
        </xs:choice>
    </xs:sequence>
</xs:complexType>

.., была разбита таким образом, чтобы различные типы элементов были в отдельных списках?Например:

public class GroupType {
    List<PageType> page;
    List<GroupType> group;
    ResourcesType resources;
    ...
}

Поведение JAXB по умолчанию состоит в объединении всех элементов, которые соответствуют choice, в один общий список.Меня не волнует порядок или воссоздание точного документа при сортировке, поэтому было бы удобнее организовать данные лучше, чем точную копию.

1 Ответ

1 голос
/ 31 января 2012

Начиная с POJO, вы можете аннотировать свой класс следующим образом:

@XmlAccessorType(XmlAccessType.FIELD)
public class GroupType {
    @XmlElement(name="Page")
    List<PageType> page;

    @XmlElement(name="Group)
    List<GroupType> group;

    @XmlElement(name="Resources")
    ResourcesType resources;
    ...
}

Если вы генерируете свои классы из схемы XML, то вы можете использовать файл внешних привязок, чтобы указать, что у вас есть предварительныевстроенный класс для GroupType

для получения дополнительной информации

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