JAX-B сортирует все - PullRequest
       31

JAX-B сортирует все

1 голос
/ 29 сентября 2011

У меня есть класс с @XmlRootElement(name="objectName",namespace="https:blahblah") и некоторые атрибуты в классе с @XmlElement(namespace="https:blahblah")

Но теперь у меня есть элемент без аннотации XmlElement.Почему это также маршалинг?

Я хочу маршалировать только аннотированные атрибуты.

Код выглядит так:

            JAXBContext jc = JAXBContext.newInstance(SomeClass.class);
        Marshaller m = jc.createMarshaller();
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        dbf.setNamespaceAware(true);
        Document doc = dbf.newDocumentBuilder().newDocument();
        m.marshal(someInstanceOfSomeClass, doc );

Ответы [ 2 ]

4 голосов
/ 29 сентября 2011

Создайте атрибуты, которые вы не хотите маршалировать, либо transient, либо пометьте их @XmlTransient.Что касается точного , почему я отсылаю вас к спецификации .

3 голосов
/ 29 сентября 2011

JAXB является конфигурацией по исключению, это означает, что у него есть правила по умолчанию для преобразования объектов Java в XML.Вы должны предоставлять метаданные только там, где вам нужно переопределить правила по умолчанию, это значительно уменьшает количество необходимых настроек.

Вы можетеукажите @XmlAccessorType(XmlAccessType.NONE), чтобы маршалировались только аннотированные поля / свойства.

@XmlRootElement
@XmlAccessorType(XmlAccessType.NONE)
public class Root {

    @XmlElement
    private String foo;  // Will be marshalled

    private String bar;  // Will not be marshalled

}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...