Там уже было обсуждение . И окончательный ответ таков: чтобы удалить standalone="true"
, мы можем сделать:
jaxbMarshaller.setProperty("com.sun.xml.internal.bind.xmlDeclaration", Boolean.FALSE);
jaxbMarshaller.setProperty("com.sun.xml.internal.bind.xmlHeaders",
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
Но по некоторым причинам это не работает в моем случае. Нет ошибки, но вообще нет «заголовка», поэтому похоже, что установка xmlDeclaration
в false
работает, но установка собственного xmlHeaders
не работает. Мой маршаллер это:
final JAXBContext jaxbContext = JAXBContext.newInstance(Car.class);
final Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
jaxbMarshaller.setProperty("com.sun.xml.internal.bind.xmlDeclaration", Boolean.FALSE);
jaxbMarshaller.setProperty("com.sun.xml.internal.bind.xmlHeaders",
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
jaxbMarshaller.marshal(object, sw);
return sw.toString();
В чем может быть причина?