Как создать версию XML, отличную от 1.0, при сортировке с помощью JAXB - PullRequest
2 голосов
/ 10 августа 2011

У меня есть несколько XSD-файлов и соответствующих XJC-файлов. Номер версии всех сгенерированных файлов XML с использованием JAXB должен быть одинаковым и должен быть выбран из файла XJC или jaxb.properties. Я не могу найти номер версии XML, на который ссылается JAXB. По умолчанию он генерирует 1.0.

1 Ответ

0 голосов
/ 10 августа 2011

По сути вам необходимо установить JAXB Marshaller в режим фрагмента, используя свойство Marshaller.JAXB_FRAGMENT.Затем напишите заголовок XML самостоятельно.Следующий пример демонстрирует, как это можно сделать с помощью StAX.

Демо

package forum7009289;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamWriter;

public class Demo {

    public static void main(String[] args) throws Exception {
        JAXBContext jc = JAXBContext.newInstance(Root.class);

        Root root = new Root();

        Marshaller marshaller = jc.createMarshaller();
        marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);

        XMLOutputFactory xof = XMLOutputFactory.newFactory();
        XMLStreamWriter xsr = xof.createXMLStreamWriter(System.out);
        xsr.writeStartDocument("1.1");
        marshaller.marshal(root, xsr);
        xsr.writeEndDocument();
    }

}

Root

package forum7009289;

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class Root {

}

Выход

<?xml version='1.1' encoding='UTF-8'?><root/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...