#namespaces #jaxb #prefix
#пространства имен #jaxb #префикс
Вопрос:
Видит бог, я искал на форуме ответ, но не увидел ни одного. Это упрощенный 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 следует сообщить автору, чтобы он не обновлял корневой элемент с префиксом.
Комментарии:
1. Итак, я хочу создать один префикс (ns3 или xyz), но я не хочу, чтобы создавался другой (ns2).
2. Это нормально, если xsi: schemaLocation и xmlns: xsi не указаны в App element, но мне нужно xmlns =»urn: abc» и без префикса для этого пространства имен.