“ com.sun.xml.bind.xmlDeclaration = false”和“ jaxb.fragment = true”之间有什么区别?

时间:2019-08-26 18:45:19

标签: java xsd jaxb marshalling

最近,当我使用JAXB时,我不得不从生成的文件中删除xml标头。我的意思是,我必须删除xml文件中的第一行,就像这样:

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

几分钟后,我在互联网上发现可以使用以下解决方案之一:

marshaller.setProperty("jaxb.fragment", true);

marshaller.setProperty("com.sun.xml.bind.xmlDeclaration", false);

两个人都为我工作...但是他们之间有什么区别?

注意::我正在使用Java 12

我创建了一个MCVE,可以在这里https://github.com/starwarsjk/jaxb-remove-xml-header

找到

1 个答案:

答案 0 :(得分:0)

“ com.sun.xml.bind.xmlDeclaration”来自JAXB 1,但仍受JAXB 2支持。 Marshaller.JAXB_FRAGMENT是等效的,但希望以后使用。