Как мне создать пустой тег 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/>