【发布时间】:2011-12-19 14:01:49
【问题描述】:
我需要将 JAXB 对象编组为 xml 格式字符串。我正在使用 SLSB 并挂钩代码以在 @PostConstruct 注释方法中创建 Marshaller 和其他内容。这样每次我都不需要加载架构并创建 Marshaller。
@PostConstruct注解方法中的代码如下。
JAXBContext jaxbContext = JAXBContext.newInstance(jaxbPackageName);
SchemaFactory factory = SchemaFactory
.newInstance(javax.xml.XMLConstants.W3C_XML_SCHEMA_NS_URI);
URL schemaUrl = Thread.currentThread().getContextClassLoader()
.getResource(resourcePath);
schema = factory.newSchema(schemaUrl);
setMarshaller(jaxbContext.createMarshaller());
getMarshaller().setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,
Boolean.FALSE);
getMarshaller().setSchema(schema);
getMarshaller().setEventHandler(new DefaultValidationEventHandler());
setUnmarshaller(jaxbContext.createUnmarshaller());
getUnmarshaller().setSchema(schema);
getUnmarshaller().setEventHandler(new DefaultValidationEventHandler());
当客户端代码需要xml格式的对象时,下面的方法返回相同。
OutputStream outputStream = new ByteArrayOutputStream();
getMarshaller().setProperty(Marshaller.JAXB_SCHEMA_LOCATION,
schemaLocation);
getMarshaller().marshal(document, outputStream);
xmlString = outputStream.toString();
我担心的是,有没有更好的方法来做同样的事情(当客户端代码想要获取 JAXB 对象的 xml 格式时,返回相同的最快方法?)。
谢谢
【问题讨论】:
标签: java xml xml-serialization jaxb marshalling