我已经
了如果我有一个类型为A的XML实例,我可以使用XSLT和Jettsion生成一个合理的B的JSON表示。但我真正想做的是采用A类型的Java对象,一个JAXB编组器,我现有的A-> B XSLT和Jettsion XMLStreamWriter生成类型B的JSON,而不必在它们之间生成B(XML或Java)的实例。
Java Object A --> JAXB Marshaller --> ? --> XSLT A to B transfrom --> JSON B
我有一个想法,我应该能够通过编组到SAXResult来实现这一点,而SAXResult又可以作为可以提供XSLT转换的XMLReader。我需要一种可以协调编组与转换的ContentHandlerAdapter。
但是我的头开始旋转。
有没有人看到或写过这样的设置,希望能给我一个例子?
答案 0 :(得分:0)
这是trax TransformerHandler
接口的目的。
TransformerFactory tf = TransformerFactory.newInstance();
// or just use new net.sf.saxon.TransformerFactoryImpl() for Saxon (XSLT 2.0)
Source xslt = new StreamSource(....);
TransformerHandler handler =
((SAXTransformerFactory)tf).newTransformerHandler(xslt);
Result result = new StAXResult(theJettisonStreamWriter);
handler.setResult(result);
SAXResult marshallerResult = new SAXResult(handler);
// marshal to the marshallerResult as normal
答案 1 :(得分:0)
您可以在Marshaller
中包装对象和JAXBContext
(或JAXBSource
)的实例,并将其传递给Transformer
。