Бог свидетель, искал на форуме ответ, но не нашел. Это упрощенный XML, который читает мой код JAXB. Задействовано 2 пространства имен. хиз и абв. Эти два определены в двух разных файлах схемы. И 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 должен указывать писателю не обновлять корневой элемент с префиксом.