2012-02-28 73 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來轉換一個對象。沒有中間格式。