2012-02-28 6 views
2

XSLTテンプレートファイルを使用して、JAXB生成オブジェクトを別のJAXBオブジェクトに変換する方法はありますか? 2つのオブジェクトは、2つの異なるJAXBバインディングによって生成されます。XSLTテンプレートを使用して1つのJAXBオブジェクトから別のJAXBオブジェクトに変換する

オブジェクトを文字列にマーシャリングしてから、XSLTプロセッサを使用して別の形式に変換することができます。その後、他のJAXBオブジェクトにアンマーシャリングします。

JAXBでこれが可能なのか疑問です。

答えて

3

私は中間的なシリアライゼーションやドームツリーの構築がないと考えていませんが、文字列へのシリアライズは最悪のオプションです。最良のオプションはおそらく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を使用してオブジェクトを変換します。仲介フォーマットはありません。

関連する問題