【发布时间】:2017-06-27 10:24:28
【问题描述】:
我的代码完成如下:
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
Source sourceContent = soapResponse.getSOAPPart().getContent();
System.out.print("\nResponse SOAP Message = ");
StreamResult result = new StreamResult(System.out);
transformer.transform(sourceContent, result);
它在控制台中有这个输出(结果在 ONE OUTPUT 行中,但为了更清楚,我会像漂亮的 xml 一样复制粘贴它)。
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<VerifyEmailResponse xmlns="http://ws.cdyne.com/">
<VerifyEmailResult>
<ResponseText>Mail Server will accept email</ResponseText>
<ResponseCode>3</ResponseCode>
<LastMailServer>gmail-smtp-in.l.google.com</LastMailServer>
<GoodEmail>true</GoodEmail>
</VerifyEmailResult>
</VerifyEmailResponse>
</soap:Body>
</soap:Envelope>
所以这完全可以。现在,如果我只想拥有 ResponseText 或 ResponseCode 值并将它们放在某些字段中,我该如何将此结果处理为 XML 以及如何获取该 XML 元素?
我也看了这个问题Convert StreamResult to string or xml,但我看不到与我的问题的关系,因为我的课程代码中已经有 ANSWER 但我无法处理 RESULT(将它作为我可以处理的 XML此外) 如果我只添加
StringWriter writer = new StringWriter();
String resultString2=writer.toString();
我没有引用已经有输出的 RESULT 变量。
我也试过这个:
result.getOutputStream().toString();
但结果是
java.io.PrintStream@3b9a45b3
result.toString(); 也没有给我想要的结果
如何将此输出到 XML 元素,我可以从中检索和获取特定的 XML 元素?
提前谢谢你,
【问题讨论】:
-
为什么不使用DOM解析器来解析你的xml并获取节点属性
-
您好,您能告诉我如何将此结果变量转换为 DOM 以便能够获取特定的 XML 元素吗?谢谢
-
RESULT 必须以这种方式返回,因为我正在使用一些已经存在的类。但现在我希望将其转换为 DOM 或 XML,以便能够从完整输出中获取特定的 XML 元素
-
你看到了吗
标签: java xml soap stream xmlstreamreader