Как написать POJO для Marshalling двух списков объектов? - PullRequest
0 голосов
/ 25 октября 2018
<MyRoot>
    <Person>
        <Name>Joe</Name>
        <Age>20</Age>
    </Person>   
    <Address>
        <HouseName>Joe</HouseName>
        <Place>Delhi</Place>
    </Address>
    <Person>
        <Name>James</Name>
        <Age>21</Age>
    </Person>   
    <Address>
        <HouseName>Joe</HouseName>
        <Place>Mumbai</Place>
    </Address>
</MyRoot>

Сверху xml видно, что тег person и address не заключен в тег-обертку.Я хочу создать XML с использованием JAXB в том же формате.Я не знаю, как это сделать без тега-обертки.

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Если вы действительно хотите сохранить смешанную последовательность, такую ​​как <Person> <Address> <Person> <Address> (как вы говорите в своем комментарии к ответу @ Vankuisher), тогда вам нужно хранить Person s и Address не в двух отдельных List s, но вместе в пределах то же самое List.

Для этого Person и Address должны быть подклассами общего суперкласса (например, class Person extends Item и class Address extends Item).Затем вы используете аннотацию @XmlElements для определения соответствия между именами элементов XML и классами Java:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "MyRoot")
public class MyRoot {

    @XmlElements({
        @XmlElement(name = "Address", type = Address.class),
        @XmlElement(name = "Person", type = Person.class)
    })
    private List<Item> items;

    // public getters and setters (omitted here for brevity)
}

При маршалинге такого объекта MyRoot вы получите вывод XML ста же последовательность предметов, что и в List<Item>.

0 голосов
/ 25 октября 2018

Вы ищете создание Java-объекта, который содержит список Persons и список адресов?

public class MyRootObject {
   private List<Person> persons;
   private List<Address> addresses;
}

Если вы намерены сделать то же самое, обратите внимание, что объект XML изменится ...

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