Как мне создать пустой тег anyType без атрибутов, используя JAXB

Xsd находится здесь: http://www.iana.org/assignments/xml-registry/schema/epp-1.0.xsd

Я не хочу изменять классы XSD (поддерживаемые третьей стороной) или классы, созданные XJC, поскольку они перезаписываются при каждой сборке.

Вот пример фрагмента вышеупомянутого XSD:

<complexType name="dcpAccessType">
    <choice>
        <element name="all"/>
        ...
    </choice>
</complexType>

Соответствующий сгенерированный класс XJC выглядит так:

...
public EppDcpAccessType {
    ...
    public void setAll(Object value) { this.all = value; }
    ...
}
...

Я хочу создать пустой тег, такой как:

<all/>

Но я не знаю, как установить свойство для достижения этой цели. Если я сделаю следующее:

eppDcpAccessType.setAll("");

Я получаю следующее (с кучей атрибутов, которые мне не нужны):

<all xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string"></all>

Если я сделаю следующее:

eppDcpAccessType.setAll(new Object());

Я получаю следующую ошибку во время выполнения:

java.lang.ClassCastException: java.lang.Object cannot be cast to org.w3c.dom.Element

Как создать пустой тег без атрибутов?

1 ответ

У меня была та же проблема. Сторонний XSD с обязательным элементом без указанного типа.

Я решил это с помощью:

myJaxbType.setTheMandatoryElement(new org.dom4j.dom.DOMElement(""));

Это дало результат:

<TheMandatoryElement/>

Другие вопросы по тегам