Как распечатать форматированное SOAPMessage?

У меня есть SOAPMessage (найден в javax.xml.soap.SOAPMessage).

Однако единственный способ напечатать это, кажется, soapMessage.writeTo(System.out); Однако в нем нет новых строк, и с большим SOAPMessage его может быть трудно прочитать.

Кроме того, использование System.out.println(soapMessage.toString()); просто выводит:

com.sun.xml.internal.messaging.saaj.soap.ver1_1.Message1_1Impl@76c7e77a

Я посмотрел на Как красиво распечатать XML из Java?, Как распечатать SOAPMessage и Как преобразовать SOAPBody в String, но не решить проблему с новыми строками и/или форматированием SOAPMessage.


person jnd    schedule 09.02.2015    source источник


Ответы (1)


Если вы не возражаете против добавления дополнительных зависимостей в свой проект, jdom обеспечивает хороший форматированный вывод для XML.

Документация на jdom.org заслуживает внимания.

Это немного запутанно, но вы можете записать XML в объект документа JDOM, а затем использовать объект XMLOutputter для его печати в красивом формате:

    // write the SoapMessage to a String called xml
    File file= new File(pathToFile);
    file.createNewFile();
    FileOutputStream fileOutputStream = new FileOutputStream(file);
    soapMessage.writeTo(fileOutputStream);
    fileOutputStream.flush();
    fileOutputStream.close();
    SAXBuilder b = new SAXBuilder();
    Document doc = b.build(file);
    XMLOutputter xmlOutputter = new XMLOutputter(Format.getPrettyFormat());
    xmlOutputter.output(doc, System.out);
person DaveH    schedule 09.02.2015