Преобразование из одного объекта JAXB в другой с использованием шаблона XSLT - PullRequest
2 голосов
/ 28 февраля 2012

Есть ли способ преобразовать сгенерированный объект JAXB в другой объект JAXB, используя файл шаблона XSLT. Два объекта генерируются двумя разными привязками JAXB.

Я знаю, что могу маршалировать объект в строки, а затем использовать процессор XSLT для преобразования его в другой формат. После этого удалите его другим объектом JAXB.

Вопрос в том, возможно ли это сделать в JAXB.

Ответы [ 2 ]

3 голосов
/ 28 февраля 2012

Я не думаю, что это возможно без какой-либо промежуточной сериализации или построения 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 голос
/ 28 февраля 2012

Нет, это невозможно. JAXB преобразует Java в XML или XML в Java. Если у вас есть XML, используйте XSLT для преобразования документа. Если у вас есть объект Java, используйте Java для преобразования объекта. Нет промежуточного формата.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...