Как распечатать отформатированное сообщение SOAP?
У меня есть 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
,
1 ответ
Если вы не возражаете против добавления дополнительных зависимостей в ваш проект, тогда jdom предоставляет хороший форматированный вывод для XML.
Документацию на http://jdom.org/ стоит посмотреть.
Это немного запутанно, но вы можете записать XML в объект Document 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);