3

我有一个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

我查看了如何从 Java 中漂亮地打印 XML?如何打印 SOAPMessage如何将 SOAPBody 转换为字符串,但都不能解决换行和/或格式化SOAPMessage.

4

1 回答 1

2

如果您不介意向项目添加额外的依赖项,那么 jdom 为 XML 提供了良好的格式化输出。

jdom.org上的文档非常值得一看。

这有点令人费解,但您可以将 XML 写入 JDOM Document 对象,然后使用 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);
于 2015-02-09T23:10:46.887 回答