2012-02-28 30 views
2

是否有方法使用XSLT模板文件将JAXB生成的对象转换为另一个JAXB对象。这两个对象由两个不同的JAXB绑定生成。使用XSLT模板将一个JAXB对象转换为另一个

我知道我可以将对象放到字符串中,然后使用XSLT处理器将其转换为其他格式。之后,将它解组到另一个JAXB对象。

问题是这是否可以在JAXB中做。

回答

3

我不认为没有任何中间序列化或dom树构造它可能,但序列化为一个字符串将是最糟糕的选择恕我直言。最好的选择可能会编组到一个TransformerHandler,它执行xsl转换并构建一个dom树。这棵树可以再次解组。下面是一些(未经测试的)示例代码,其示出了这可以如何工作:

Source xsl = ... 
SAXTransformerFactory factory = (SAXTransformerFactory) TransformerFactory.newInstance(); 
TransformerHandler handler = factory.newTransformerHandler(xsl); 

DOMResult result = new DOMResult(); 

handler.setResult(result); 

marshaller.marshal(inputObject, handler); 

transformedObject = unmarshaller.unmarshal(result.getNode()); 
1

不,这是不可能的。 JAXB将Java转换为XML或XML转换为Java。如果您有XML,那么使用XSLT来转换文档。如果您有一个Java对象,那么使用Java来转换一个对象。没有中间格式。

相关问题