Печать сгенерированного JAXB-компонента - PullRequest
2 голосов
/ 04 августа 2011

У меня есть класс данных JAXB, сгенерированный из wsimport, и я хотел бы распечатать его на консоли и / или в журнале. К сожалению, toString не генерируется.

Какой самый простой способ напечатать объект данных? Неважно, является ли вывод исходным XML или чем-то еще, если он доступен для чтения.

Похоже, класс является допустимым bean-компонентом (с правильными именами getters и setters), поэтому все, что работает с bean-компонентами, вероятно, тоже подойдет.

1 Ответ

3 голосов
/ 04 августа 2011

Для печати на консоль попробуйте следующее:

jaxbContext.createMarshaller().marshal(jaxbObject, System.out);

Чтобы получить String, используйте StringWriter:

StringWriter writer = new StringWriter();
jaxbContext.createMarshaller().marshal(jaxbObject, writer);
String xmlString = writer.toString();

Чтобы получить объект JAXBContext, вам нужно сделать следующее:

JAXBContext jaxbContext = JAXBContext.newInstance(<WhateverClass>.class);

Где <WhateverClass> - литерал класса для типа jaxbObject. Вы также должны быть в состоянии сделать:

JAXBContext jaxbContext = JAXBContext.newInstance(jaxbObject.getClass());

В зависимости от того, где вы определяете контекст и ваши стилистические предпочтения. JAXBContext является потокобезопасным, поэтому хорошо определить один экземпляр и поделиться им. Marshaller и Unmarshaller не дают таких гарантий. Поэтому их нужно создавать по требованию.

...