Elim的博客

用来记录一些原创性的总结


Elim

取消JAXB生成XML的头信息

正常情况下我们使用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日)