1

我正在使用 WebServiceTemplate 类,并且将从 Web 服务接收到的 XML 响应存储在一个文件中。但是 .xml 文件由于某种原因包含所有<,>保存为;&lt;&gt.

有什么办法可以.xml在保存之前将其转换为正确的文件?

        InputStream inputStream = new   WebServiceClientImpl().getClass().getResourceAsStream("Request.xml");
        StreamSource source = new StreamSource(inputStream2);
        StreamResult result = new StreamResult(new File("Response.xml"));               
        webServiceTemplate.sendSourceAndReceiveToResult(defaultURI,source, result);

请求.xml:

 <list>
 <requestXmlString xs:type="type:string" xmlns:xs="http://www.w3.org/2000/XMLSchema- instance">
 <![CDATA[<request operationName="list" locale="en">
     <resourceDescriptor name="" wsType="folder" uriString="/" isNew="false">
     <label>null</label>
     </resourceDescriptor>           
     </request>]]>
      </requestXmlString>
 </list>

响应.xml

  <?xml version="1.0" encoding="UTF-8"?><listResponse   xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"   soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><listReturn   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:string">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
    &lt;operationResult version="2.0.1"&gt;
&lt;returnCode&gt;&lt;![CDATA[0]]&gt;&lt;/returnCode&gt;
&lt;resourceDescriptor name="Record1" wsType="reportUnit"  uriString="/xyz" isNew="false"&gt;
    &lt;label&gt;&lt;![RECORD 1]]&gt;&lt;/label&gt;
    &lt;creationDate&gt;1338285680000&lt;/creationDate&gt;
    &lt;resourceProperty name="PROP_RESOURCE_TYPE"&gt;
        &lt;value&gt;&lt;!   
4

2 回答 2

0

在写入文件时,像 < > & 这样的字符会被序列化,以便以后可以被 XML 解析器读取。

您可以尝试在文本节点上使用 CDATA 编码。在这种情况下,您将在 CDATA 块中使用 <。

http://en.wikipedia.org/wiki/CDATA

于 2012-10-19T08:36:08.393 回答
0

我想到了!:) 有图书馆可以做到这一点。所以一个简单的

StringEscapeUtils.unescapeXml(xml)

会成功的!

于 2012-10-19T09:14:20.873 回答