Получение результата Маршалла в String - PullRequest
36 голосов
/ 05 февраля 2012
JAXBContext context = JAXBContext
                    .newInstance(CreateExemptionCertificate.class);
            Marshaller m = context.createMarshaller();
            m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);

            m.marshal(cc, System.out);

В приведенном выше коде я получаю результат на консоль (я имею в виду, что XML печатается на консоли).Я хочу получить этот XML в строку.Я не получаю, какой аргумент я должен передать методу маршала, чтобы получить XML String в переменной String вместо печати его на консоли.Кто-нибудь есть идеи, пожалуйста, поделитесь.

Ответы [ 3 ]

36 голосов
/ 21 декабря 2016

Вы можете сделать это так:

    CreateExemptionCertificate cc = ...;
    JAXBContext context = JAXBContext.newInstance(CreateExemptionCertificate.class);
    Marshaller m = context.createMarshaller();
    m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);

    StringWriter sw = new StringWriter();
    m.marshal(cc, sw);

    String result = sw.toString();
24 голосов
/ 08 февраля 2012

Только что я получил ответ на свой вопрос из этого поста ниже:

Я хочу преобразовать выходной поток в объект String

Мне нужно использовать StringWriter для получения XML-строки из метода Маршала

5 голосов
/ 05 февраля 2012

Попробуйте выполнить маршалинг для экземпляра ByteArrayOutputStream и затем вызовите toByteArray для него.

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