使用XSLT模板从一个JAXB对象转换为另一个JAXB对象

时间:2012-02-28 13:29:25

标签: java xml xslt jaxb

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

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

问题是如果可以在JAXB中做到这一点。

2 个答案:

答案 0 :(得分:3)

我不认为没有任何中间序列化或dom树构造它是可能的,但序列化为字符串将是最糟糕的选择imho。最好的选择可能是编组到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 :(得分:1)

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