Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中保存.xml文件_Java_Spring Ws - Fatal编程技术网

在Java中保存.xml文件

在Java中保存.xml文件,java,spring-ws,Java,Spring Ws,我正在使用WebServiceTemplate类,并将从webservice接收到的XML响应存储在一个文件中。但是由于某种原因,.xml文件包含所有保存为的<和> 在保存之前,有没有办法将其转换为适当的.xml文件 InputStream inputStream = new WebServiceClientImpl().getClass().getResourceAsStream("Request.xml"); StreamSource source

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

在保存之前,有没有办法将其转换为适当的
.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);
request.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>

无效的
]]>
Response.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;!   
?xml version=“1.0”encoding=“UTF-8”?
操作结果版本=“2.0.1”
返回码![CDATA[0]]/returnCode
resourceDescriptor name=“Record1”wsType=“reportUnit”uriString=“/xyz”isNew=“false”
标签![记录1]]/label
creationDate 1338285680000/creationDate
resourceProperty name=“PROP\u资源\u类型”
价值

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

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

我想出来了!:)有这样的库。这么简单

StringEscapeUtils.unescapeXml(xml)

我会成功的

谢谢。我已经添加了我的代码。问题是我需要解组我得到的XML响应。我正在考虑使用Castor解组器将XML绑定到我的java对象。但它似乎无法识别这些字符&在档案里。我不确定它是否能识别CDATA部分。我将发布我的请求和响应XML,以便您可以查看。@Brian我已经添加了一些代码片段。感谢您以前拥有的是正确的XML。问题是XML包含嵌套的XML作为字符串。在字符串上使用unescapeXml会将其更改为其他内容。