#jaxb #xsd
#jaxb #xsd
Вопрос:
Вот мои страницы.xsd
<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:mac="http://www.tvworks.com/tva/xml/ns/max/data-types"
elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xs:import namespace="http://www.tvworks.com/tva/xml/ns/max/data-types"
schemaLocation="http://developer.tva.tvworks.com/xml/ns/max/data-types-3.2.xsd"/>
<xs:element name="data">
<xs:complexType>
<xs:sequence>
<xs:element name="scenes" type="scenesType"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="scenesType">
<xs:sequence>
<xs:element name="row" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="page" type="mac:page-ref"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>
Вот мои страницы.xjb
<bindings xmlns="http://java.sun.com/xml/ns/jaxb"
xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
version="2.1">
<bindings schemaLocation="pages.xsd" version="1.0"">
<schemaBindings>
<package name="com.mycompany.pages"/>
</schemaBindings>
</bindings>
</bindings>
Вот как я хочу, чтобы вывод выглядел, обратите внимание xsi:noNamespaceSchemaLocation="pages.xsd"
.
<data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="pages.xsd">
<scenes>
<row>
<page>page1</page>
</row>
<row>
<page>page2</page>
</row>
<row>
<page>page3</page>
</row>
<row>
<page>page4</page>
</row>
</scenes>
</data>
Как мне автоматически добавить этот атрибут к data
элементу, выводимому JAXB?
Ответ №1:
Установите свойство jaxb.noNamespaceSchemaLocation
с желаемым значением на вашем Marshaller
.
РЕДАКТИРОВАТЬ: проверьте раздел о поддерживаемых свойствах в документации маршаллера, а также метод setProperty для получения дополнительной информации.