私の Web サービスは、DOM を使用してこの文字列を構築している String(xml) を返します。問題は、この xml を文字列に変換する場合です。最初に追加された追加の CDATA があり、それを削除できないようです。私はこの美しい関数をstackoverflowから取得しましたが、前述の問題は、Xml文字列を返したいので必要のないCDATAを追加することです。Soap Web サービスを使用していないことを確認してください。
public static String doctoString(Document doc) {
try {
StringWriter sw = new StringWriter();
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
transformer.setOutputProperty(OutputKeys.METHOD, "xml");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
transformer.transform(new DOMSource(doc), new StreamResult(sw));
return sw.toString();
} catch (Exception ex) {
throw new RuntimeException("Error converting to String", ex);
}
}
完全な出力:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ns2:getInvoppResponse xmlns:ns2="http://services.com/">
<return>
<![CDATA[
<users>
<user>
<id>1</id>
<name>sert</name>
</user>
</users>
]]>
</return>
</ns2:getInvoppResponse>
</soap:Body>
</soap:Envelope>
ボディ出力が必要:
<return>
<users>
<user>
<id>1</id>
<name>sert</name>
</user>
</users>
</return>