Jaxb2Marshaller создает JAXBContext с пустым URI пространства имен - PullRequest
1 голос
/ 26 июля 2010

Используя Spring 3, я создал MarshallingView со следующим маршаллером:

<bean name="xmlMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshalle r">
    <property name="classesToBeBound">
        <list>
            <value>com.mydomain.xml.schema.Products</value>
        </list>
    </property>
    <property name="marshallerProperties">
        <map>
            <entry key="com.sun.xml.bind.namespacePrefixMapper">
                <bean class="com.mydomain.xml.MyNamespacePrefixMapper"/>
            </entry>
        </map>
    </property>
</bean>

Предполагается, что MyNamespacePrefixMapper отображает схему объекта Products (сгенерированного XJC) на пространство имен по умолчанию, ноне потому, что Jaxb2Marshaller создает JAXBContext, который содержит два разных URI пространства имен.Одна - моя схема, другая - пустая строка.Пустая строка отменяет любую мою попытку назначить пространство имен по умолчанию.

Кто-нибудь знает, почему существует эта пустая строка или как я могу от нее избавиться?

1 Ответ

1 голос
/ 03 августа 2010

Вы можете попробовать использовать MOXy JAXB . Конфигурация Spring остается прежней, вам просто нужно добавить файл jaxb.properties в классы вашей модели со следующей записью:

javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory

См. Проблема сортировки JAXB - возможно, связанная с пространством имен . Вместо использования NamespacePrefixMapper вы можете просто настроить префиксы namesapce в стандартной аннотации @XmlSchema:

@javax.xml.bind.annotation.XmlSchema( 
    namespace = "http://www.example.org", 
    xmlns = {
        @javax.xml.bind.annotation.XmlNs(prefix = "xsd", namespaceURI = "http://www.w3.org/2001/XMLSchema"),
    },
    elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED) 
package example; 

Это производит XML как:

<?xml version="1.0" encoding="UTF-8"?>
<process xmlns="http://www.example.org" xmlns:xsd="http://www.w3.org/2001/XMLSchema"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...