java - 在JAXB中使用 XSLT

  显示原文与译文双语对照的内容
0 0

我有一个to服务( Jersey ),它使用 Eclipselink ( MOXy来访问一些记录,然后将这些记录返回给用户) 。

我所有的问题是用户需要一个不同的格式,用于在返回之前应用XSLT来转换 XML 。

我已经找到了这个使用XSLT和 JAXB http://blog.bdoughan.com/2012/11/using-jaxb-with-xslt-to-produce-html.html的例子。

它看起来很有用,但我看不到在哪里可以截获 XML,以便在将XSLT发送回用户之前。

时间: 原作者:

0 0

我将为这个用例实现一个 MessageBodyWriter 。 在 writeTo 方法中,将将XSLT样式表应用于JAXB模型以生成所需的XML:


public void writeTo(Object object, Class<?> type, Type genericType,
 Annotation[] annotations, MediaType mediaType,
 MultivaluedMap<String, Object> httpHeaders,
 OutputStream entityStream) throws IOException,
 WebApplicationException {
 try {
 ContextResolver<JAXBContext> resolver 
 = providers.getContextResolver(JAXBContext.class, mediaType);
 JAXBContext jaxbContext;
 if(null == resolver || null == (jaxbContext = resolver.getContext(type))) {
 jaxbContext = JAXBContext.newInstance(type);
 }
 TransformerFactory tf = TransformerFactory.newInstance();
 Transformer t = tf.newTransformer(xslt);
 JAXBSource source = new JAXBSource(jaxbContext, object);
 StreamResult result = new StreamResult(entityStream);
 t.transform(source, result);
 } catch(JAXBException jaxbException) {
 throw new WebApplicationException(jaxbException);
 }
}

原作者:
...