有没有办法使用XSLT模板文件将JAXB生成的对象转换为另一个JAXB对象。这两个对象由两个不同的JAXB绑定生成。
我知道我可以将对象编组为字符串,然后使用XSLT处理器将其转换为其他格式。之后,将其解组为另一个JAXB对象。
问题是如果可以在JAXB中做到这一点。
答案 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转换对象。没有中间格式。