接口返回来的xml字符串jkdata.xml
<?xml version="1.0" encoding="UTF-8"?>
<DataTable xmlns="http://sys.cdxinyong.com">
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:MainDataTable="Table" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="Table">
<xs:complexType>
<xs:sequence>
<xs:element name="Id" type="xs:int" minOccurs="0" />
<xs:element name="GUID" type="xs:string" minOccurs="0" />
<xs:element name="GName" type="xs:string" minOccurs="0" />
<xs:element name="BId" type="xs:int" minOccurs="0" />
<xs:element name="LastDate" type="xs:string" minOccurs="0" />
<xs:element name="Status" type="xs:unsignedByte" minOccurs="0" />
<xs:element name="StatusDis" type="xs:string" minOccurs="0" />
<xs:element name="BiaoDuanName" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
<NewDataSet xmlns="">
<Table diffgr:id="Table1" msdata:rowOrder="0">
<Id>166</Id>
<GUID>1002000100000000000000001014100</GUID>
<GName>皇冠国际社区四期总图幼儿园大门</GName>
<BId>7814</BId>
<LastDate>2013-03-11</LastDate>
<Status>1</Status>
<StatusDis>在线</StatusDis>
<BiaoDuanName>皇冠国际社区四期总图、幼儿园</BiaoDuanName>
</Table>
<Table diffgr:id="Table2" msdata:rowOrder="1">
<Id>167</Id>
<GUID>1002000100000000000000001014101</GUID>
<GName>皇冠国际社区四期总图刷卡机</GName>
<BId>0</BId>
<LastDate>2013-03-11</LastDate>
<Status>1</Status>
<StatusDis>在线</StatusDis>
</Table>
</NewDataSet>
</diffgr:diffgram>
</DataTable>
package com.cdmcs.jksp.client.update;
imp ort org.dom4j.Document;
imp ort org.dom4j.DocumentException;
imp ort org.dom4j.DocumentHelper;
imp ort org.dom4j.Element;
imp ort org.dom4j.VisitorSupport;
public class SurveyServiceUtil extends VisitorSupport{
private String GName;
public String getGName() {
return GName;
}
public void setGName(String name) {
GName = name;
}
public void visit(Element node) {
if ("GName".equals(node.getName())) {
this.setGName(node.getText());
try{
System.out.println("GName==="+new String(node.getText().getBytes("iso8859-1"),"gbk"));
}catch(Exception e){
e.printStackTrace();
}
} else{
}
}
public void analysis(String soapContent) throws DocumentException {
Document doc = (Document) DocumentHelper.parseText(soapContent);
doc.accept(this);
}
}
package com.cdmcs.jksp.client.update;
imp ort java.io.ByteArrayInputStream;
imp ort java.io.IOException;
imp ort java.io.InputStream;
imp ort org.apache.commons.httpclient.HttpClient;
imp ort org.apache.commons.httpclient.HttpException;
imp ort org.apache.commons.httpclient.methods.InputStreamRequestEntity;
imp ort org.apache.commons.httpclient.methods.PostMethod;
imp ort org.apache.commons.httpclient.methods.RequestEntity;
public class Test {
/**
* @param args
*/
public static void main(String[] args) throws HttpException, IOException {
String soapRequestData = "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
soapRequestData += "<soap12:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap12=\"http://www.w3.org/2003/05/soap-envelope\">";
soapRequestData += "<soap12:Body>";
soapRequestData += "<GetVideos xmlns=\"http://sys.cdxinyong.com\" />";
soapRequestData += "</soap12:Body>";
soapRequestData += "</soap12:Envelope>";
System.out.println(soapRequestData);
PostMethod postMethod = new PostMethod("http://localhost/jkdata.xml");
postMethod.setRequestHeader("Content-Type", "text/xml; charset=UTF-8");
byte[] b = soapRequestData.getBytes("utf-8");
InputStream is = new ByteArrayInputStream(b,0,b.length);
RequestEntity re = new InputStreamRequestEntity(is,b.length,"application/soap + xml; charset=utf-8");
postMethod.setRequestEntity(re);
HttpClient httpClient = new HttpClient();
int statusCode = httpClient.executeMethod(postMethod);
System.out.println("statuscode=" + statusCode);
String soapResponseData = postMethod.getResponseBodyAsString();
//System.out.println("soapResponseData=" + soapResponseData);
SurveyServiceUtil util = new SurveyServiceUtil();
try{
util.analysis(soapResponseData);
}catch(Exception e){
e.printStackTrace();
}
}
}
解决解析时的编码问题:
PostMethod postMethod = new PostMethod("http://www.tvsou.com/program/TV_54/Channel_166/W3.htm");
postMethod.setRequestHeader("Content-Type", "text/xml; charset=gb2312");
postMethod.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET,"gb2312");
postMethod.setRequestHeader("Content-Type", "text/xml; charset=gb2312");
postMethod.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET,"gb2312");