MOXy @XmlPath игнорируется - PullRequest
4 голосов
/ 10 мая 2011

У меня очень простой класс с двумя полями: String sourceAddress и int port.
Я хочу, чтобы они отображались на узлах источник / адрес и источник / порт вместо jaxb по умолчанию sourceAddress и sourcePort.
Поэтому я использую аннотацию MOXy @XmlPath.
Проблема в том, что аннотация просто игнорируется, и я получаю XML-файл "jaxb default":

<szk>
    <sourceAddress>test</sourceAddress>
    <sourcePort>10000</sourcePort>
</sz>

заранее спасибо за любую помощь Агостино

import javax.xml.bind.*;
import javax.xml.bind.annotation.*;
import org.eclipse.persistence.jaxb.JAXBContext;
import org.eclipse.persistence.oxm.annotations.XmlPath;

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class SZK {

    @XmlPath("source/address")
    private String sourceAddress;
    @XmlPath("source/port")
    private int sourcePort;

    public static void main (String [] args) throws JAXBException{

        SZK k = new SZK();
        k.sourceAddress = "test";
        k.sourcePort = 10000;

        javax.xml.bind.JAXBContext jc = JAXBContext.newInstance(SZK.class);
        Marshaller m = jc.createMarshaller();
        m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
        m.marshal(k, System.out);

    }

}

1 Ответ

6 голосов
/ 10 мая 2011

Наиболее вероятной причиной этой проблемы является отсутствие файла jaxb.properties, указывающего, что EclipseLink MOXy должен использоваться в качестве поставщика JAXB.Файл jaxb.properties должен находиться в том же пакете, что и модель вашего домена, и содержать следующую запись:

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

Для получения дополнительной информации:

...