Удалить 'standalone = "yes" из созданного XML



3 Answers

в JAXB, который является частью JDK1.6

marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);
Question

Знаете ли вы о настройке JAXB, чтобы предотвратить создание независимого = «да» в полученном XML?

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>



Если вы делаете документ зависимым от DOCTYPE (например, используете именованные объекты), то он перестанет быть автономным, поэтому standalone="yes" не будет разрешен в декларации XML.

Однако автономный XML можно использовать где угодно, в то время как нестандартный является проблематичным для XML-парсеров, которые не загружают внешние.

Я не вижу, как это объявление может быть проблемой, отличной от совместимости с программным обеспечением, которое не поддерживает XML, но каким-то ужасным супом регулярного выражения.




jaxbMarshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);
jaxbMarshaller.setProperty("com.sun.xml.internal.bind.xmlHeaders", "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>");

Это работало для меня с JDK1.7. standalone = \ "no \" можно удалить, чтобы получить только остаток части xml




Вы можете использовать: marshaller.setProperty ("jaxb.fragment", Boolean.TRUE);

Это работает для меня на Java 8




Related