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