web-dev-qa-db-fra.com

Obtenir le résultat Marshall dans String

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

            m.marshal(cc, System.out);

Dans le code ci-dessus, j'obtiens le résultat sur la console (je veux dire que XML est imprimé sur la console). Je veux obtenir ce XML dans une chaîne. Je ne reçois pas l'argument que je dois transmettre à la méthode marshal pour obtenir XML String dans une variable String au lieu de l'imprimer sur la console. Quiconque ayant une idée, veuillez partager.

36
Sunny Gupta

Je viens de recevoir la réponse à ma question dans cet article ci-dessous:

je veux convertir un flux de sortie en objet String

J'ai besoin d'utiliser StringWriter pour prendre la chaîne XML de la méthode Marshal

24
Sunny Gupta

Vous pouvez le faire comme ceci:

    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();
38
Radouane ROUFID

Essayez de rassembler une instance de ByteArrayOutputStream , puis d'invoquer toByteArray dessus.

5
laz