Как получить в выводе JAXB пространство имен, включенное в дочерний узел без префикса? - PullRequest
1 голос
/ 09 ноября 2011

Бог знает, я искал ответ на форуме, но не нашел ни одного. Это упрощенный XML, который читает мой код JAXB. Есть 2 пространства имен. XYZ и ABC. Эти два определены в двух разных файлах схемы. И xjc генерирует для них два разных пакета. Следующий файл прекрасно читается в этих классах и может даже записать его.

<xyz:xyz xsi:schemaLocation="urn:xyz xyz.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xyz="urn:xyz">
    <session>
        <App xsi:schemaLocation="urn:abc abc.xsd" xmlns="urn:abc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <AppItem att1="1234"/>
        </App>
    </session>
</xyz:xyz>

Вот как это пишет.

<ns3:xyz xmlns:ns2="urn:abc" xmlns:ns3="urn:xyz">
    <session>
        <ns2:App>
            <ns2:AppItem att1="1234"/>
        </ns2:App>
    </session>
</ns3:xyz>

Теперь я знаю о NamespacePrefixMapper и могу изменить ns2 и ns3 на значения, которые я хочу. И я этого хочу. В основном я хочу основную оригинальную форму XML. Элемент App должен содержать всю свою информацию в себе, а не создавать префикс.

<xyz:xyz xmlns:xyz="urn:xyz">
    <session>
        <App xsi:schemaLocation="urn:abc abc.xsd" xmlns="urn:abc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <AppItem att1="1234"/>
        </App>
    </session>
</xyz:xyz>

Кто-нибудь знает, как этого добиться? Похоже, некоторые настройки в AppType.java должны указывать автору не обновлять корневой элемент префиксом.

...