Как избежать ненужных объявлений пространств имен в упорядоченном элементе / теге?

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

Используя XJC 2.2 и JAXB 2.2 в режиме простого связывания, я хочу создать корневой элемент с пустым элементом hello внутри. Но при упорядочивании я получаю много лишнего дерьма с пространством имен. Что мне кажется ненужным. (Это работает, но это больше данных для отправки и т. Д.)

XSD Rootelement:

<element name="epp">
        <complexType>
            <choice>
                <element name="greeting" type="epp:greetingType" />
                <element name="hello" />
                <element name="command" type="epp:commandType" />
                <element name="response" type="epp:responseType" />
                <element name="extension" type="epp:extAnyType" />
            </choice>
        </complexType>
    </element>

Код Java:

Epp epp = new Epp(); 
epp.setHello("");

Упорядоченный результат:

<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
     <hello xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string"></hello>
</epp>

Предпочтительный результат:

<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<hello />
</epp>

Или:

<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<hello></hello>
</epp>

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

6
задан skaffman 28 October 2011 в 16:27
поделиться