Как я могу добавить xsi: nil = "true" к элементу, который JAXB создает в виде списка? - PullRequest
0 голосов
/ 10 октября 2019

У меня есть некоторые части некоторых XSD:

1.

<element name="element1" type="complexType" nillable="true" minOccurs="0" maxOccurs="unbounded"/>

2.

<complexType name="complexType">
        <complexContent>
            <restriction base="someOtherComplexType">
                <sequence>
                        <SOME_ELEMENTS_HERE>
                </sequence>
                <attribute ref="ns:someAttribute1" use="required" fixed="ABC"/>
                <attribute ref="ns:someAttribute2" use="required"/>
            </restriction>
        </complexContent>
    </complexType>

Элемент1 генерируется в коде Java в виде списка. Когда я добавляю элементы в список, JAXB сериализуется следующим образом:

<ns:element1 ns:someAttribute="ABC" ns:someAttribute2="T"/>

Хотя это не соответствует схеме, поскольку в нем отсутствуют данные из части «sequence». Поскольку я не хочу ничего добавлять для «последовательности», мне нужно сгенерировать следующий вывод, чтобы соответствовать XSD:

<ns:element1 ns:someAttribute="ABC" ns:someAttribute2="T" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>

Есть ли у вас какие-либо идеи, как это сделать, сохраняяПомните, что эти элементы добавляются в список, список, который сериализуется таким образом?

PS: сделать абстракцию, если некоторые пространства имен и имена не совпадают на 100%. Мне нужно было заменить мои оригинальные XSD на несколько фиктивных имен.

...