将Marshall结果转换为String

时间:2012-02-05 18:15:12

标签: java jaxb

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变成一个字符串。我没有得到我应该传递给marshal方法的哪个参数来获取String变量中的XML String而不是在控制台上打印它。任何有任何想法的人请分享。

3 个答案:

答案 0 :(得分:34)

你可以这样做:

    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();

答案 1 :(得分:24)

刚才我从以下这篇文章中得到了我的问题的答案:

I want to convert an output stream into String object

我需要使用StringWriter从Marshal方法中获取XML String

答案 2 :(得分:5)

尝试编组到ByteArrayOutputStream的实例,然后在其上调用toByteArray