我有两个不同的字符串,例如:
1)
HTTP/1.1 200 OK
Content-Length: 144
content-type: application/xml
Date: Wed, 11 Nov 2015 12:57:07 GMT
Server: Jetty(7.5.4.v20111024)
Note: Header order may not reflect actual transmitted stream.
<?xml version="1.0" encoding="UTF-8"?>
<Log>
<Code>0</Code>
<SensitiveData2>Data Is Here</SensitiveData2>
</Log>
2)
HTTP/1.1 200 OK
Content-Type: text/xml;charset=UTF-8
Content-Length: 1099
Server: Jetty(7.5.4.v20111024)
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<Response_Phase_IIResponse xmlns="http://tempuri.org/">
<Response_Phase_IIResult>
<Address_Parameters_Phase_II>
<Setup_In_CRM>NO</Setup_In_CRM>
<CRM_Profile_ID>0</CRM_Profile_ID>
</Address_Parameters_Phase_II>
</Response_Phase_IIResult>
</Response_Phase_IIResponse>
</soap:Body>
</soap:Envelope>
我需要解析这些字符串并从根节点获取整个XML元素而不使用任何标头。我如何实现这一目标?
答案 0 :(得分:0)
&LT;?xml的
或
&LT;肥皂:
答案 1 :(得分:0)
如果这些是httpResponse对象,你不应该修改它们来阅读它们。标题和正文分别访问。
这是一个例子(可能是不完美的代码,但它有效):
SOAPConnection connection = SOAPConnectionFactory.newInstance().createConnection();
URL endpoint = null;
try {
endpoint =
new URL(new URL(url), path, new URLStreamHandler() {
@Override
protected URLConnection openConnection(URL url) throws IOException {
URL target = new URL(url.toString());
URLConnection connection = target.openConnection();
// Connection settings
connection.setConnectTimeout(10000); // 10 sec
connection.setReadTimeout(30000); // 1 min
return(connection);
}
});
} catch (Exception e) {
throw new SOAPException("Connection unavailable");
}
SOAPMessage response = null;
try {
response = connection.call(message, endpoint);
} catch (SOAPException e) {
connection.close();
throw new SOAPException(e);
}
try {
SOAPBody responseBody = response.getSOAPBody();
if(responseBody.getFault()!=null){
throw new SOAPException("Message unreadable");
}
} catch (SOAPException e) {
connection.close();
throw new SOAPException(e);
}
connection.close();
此声明,&#34; SOAPBody responseBody = response.getSOAPBody();&#34;得到肥皂的身体。
如果您正在处理完全复制的字符串,那么您需要使用RegX来处理不是XML主体的位。