用来记录一些原创性的总结
正常情况下我们使用JAXB来生成XML时,生成的XML都会包含如下这样一段头信息。这在有的时候可能并不是我们需要的,怎么办呢?
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
JAXB对此也提供了定制化参数,可以允许我们在生成XML时不生成对应的头信息。这需要我们在编程的时候直接基于Marshaller
接口编程,而不是直接使用工具类JAXB
,基于Marshaller
接口编程时允许我们指定一些参数,其中一项参数Marshaller.JAXB_FRAGMENT
,我们指定其值为true
即可在转换XML时不生成对应的头信息。
以下是指定Marshaller.JAXB_FRAGMENT
为true的情况下的源码和输出情况。
@Test
public void test() throws Exception {
User user = new User();
user.setId(1);
user.setName("张三");
JAXBContext jaxbContext = JAXBContext.newInstance(User.class);
Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);//格式化XML
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);
marshaller.marshal(user, System.out);
}
上面的参数
Marshaller.JAXB_FORMATTED_OUTPUT
是用来指定是否需要对生成的XML进行格式化的,默认是false
。
输出的XML:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<user>
<id>1</id>
<name>张三</name>
</user>
(本文由Elim写于2017年6月29日)