import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;
import java.util.Map;
import mqq.sdet.dbt.protocol.DBTResp;
import mqq.sdet.xhttp.XResp;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;
/**
* @author just
* @since XHttp 0.9
*
*/
public class XMLEndecoder {
public static final String XML_DECLARATION = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
public static final String DEFAULT_ENCODING = "UTF-8";
public static final String REQ = "REQ";
public static final String RESP= "RESP";
protected String encoding;
protected XStream xstream = new XStream(new DomDriver());
public XMLEndecoder(){
setEncoding(DEFAULT_ENCODING);
}
public XMLEndecoder(String en){
setEncoding(en);
}
public String getEncoding() {
return encoding;
}
public void setEncoding(String encoding) {
this.encoding = encoding;
}
public void encodeReq(Object req,OutputStream os) throws IOException{
encode(req,os);
}
public void encodeResp(XResp resp,OutputStream os) throws IOException{
encode(resp,os);
}
public void encode(Object object,OutputStream os) throws IOException{
if(object == null){
throw new IOException("Encode:Instance can not be null!");
}
Writer wt = null;
try {
wt = new OutputStreamWriter(os,encoding);
wt.write(XML_DECLARATION);
xstream.toXML(object, wt);
} catch (IOException e) {
throw e;
}finally{
if(wt != null){
wt.close();
}
}
}
public XResp decodeResp(InputStream is) throws IOException{
Reader reader = null;
XResp resp = null;
try {
reader = new InputStreamReader(is,encoding);
resp = (XResp)xstream.fromXML(reader);
} catch (IOException e) {
throw e;
}finally{
if(reader != null){
reader.close();
}
}
return resp;
}
// public XReq decodeReq(InputStream is) throws IOException{
// Reader reader = null;
// XReq req = null;
// try {
// reader = new InputStreamReader(is,encoding);
// req = (XReq)xstream.fromXML(reader);
// } catch (IOException e) {
// throw e;
// }finally{
// if(reader != null){
// reader.close();
// }
// }
// return req;
// }
@SuppressWarnings("unchecked")
public Map<String,String> decodeMap(InputStream is) throws IOException{
Reader reader = null;
Map<String,String> handleMap = null;
try {
reader = new InputStreamReader(is,encoding);
handleMap = (Map<String, String>) xstream.fromXML(reader);
} catch (IOException e) {
throw e;
}finally{
if(reader != null){
reader.close();
}
}
return handleMap;
}
//@SuppressWarnings("unchecked")
public Object decodeObject(InputStream is) throws IOException{
Reader reader = null;
Object object = null;
try {
reader = new InputStreamReader(is,encoding);
object = xstream.fromXML(reader);
} catch (IOException e) {
throw e;
}finally{
if(reader != null){
reader.close();
}
}
return object;
}
}
--------------------------------------------------------上面是解析xml为object方法------------------------------
-----------------------------调用如下------------------
public static void main(String[] args){
XMLEndecoder endecoder = new XMLEndecoder();
endecoder.setEncoding("UTF-8");
DBTResp resp;
try {
resp = (DBTResp) endecoder.decodeObject(new FileInputStream("C:\\DBTResp.xml"));
System.out.println(resp.getModuleName());
System.out.println(resp.taskResults.size());
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
如果 DBTResp.xml 文件用记事本打开另存为utf-8就会报错。。。Content is not allowed in prolog
解决方法: 文件用记事本打开另存为ASCII就可以
分享到:
相关推荐
设置隐试打开PPT报错 Hiding the application window is not allowed
Host 主机名 is not allowed to connect the mysql server 原因:没有授权远程访问mysql 解决方法: cmd 中运行mysql -u root -p(如果报mysql 不是内部或外部命令,找到安装mysql对应的bin文件夹运行mysql.exe,...
"Host 'localhost' is not allowed to connect to this MySQL server" 的原因及解决办法
nginx: [emerg] “proxy_cache_path” directive is not allowed here in /etc/nginx/conf.d/default.conf:29 提示意思“proxy_cache_path指令不被允许”,在官网上查找了相关说明,也没有发现问题,最后看应用范围...
mongod高级查询语句,Javascript查询和$where查询,正则表达式匹配
主要介绍了php采用curl访问域名返回405 method not allowed提示的解决方法,需要的朋友可以参考下
NULL 博文链接:https://rayoo.iteye.com/blog/1973032
directories that will not be allowed to be processed by Diskeeper. Event Logging ------------- Diskeeper records information about its activity in two ways. First, general information about ...
Android WebView 报 Not allowed to load local resource错误的解决办法 博客地址:http://blog.csdn.net/yuzhiqiang_1993/article/details/76228541
java.lang.UnsupportedOperationException: For security reasons, WebView is not allowed in privileged processes 因为应用是系统级别的,在AndroidManifest.xml中添加了android:sharedUserId=”android.uid....
opencv-2.4.9/modules/gpu/src/nvidia/core/NCVPixelOperations.hpp(51): error: a storage class is not allowed in an explicit specialization 这是由于NCVPixelOperations.hpp的问题,只要替换opencv-2.4.9/...
NR5G网络拒绝码-5gmm_cause = 7 (0x7) (5GS Service not allowed)
message from server: “Host ‘****’ is not allowed to connect to this MySQL server 1:在登录mysql服务器 2:执行:GRANT ALL PRIVILEGES ON *.* TO ‘root’@’%’ WITH GRANT OPTION //赋予任何主机访问数据的...
NULL 博文链接:https://yizhilong28.iteye.com/blog/1137285
keil常见错误 keil常见错误 keil常见错误 keil常见错误
keil 编译时出现错误和警告总结 中国电子DIY之家
从3GPP协议和UE端行为分析5G gmm cause #27的网络问题
jmeter源码 log4j2.xml
ERROR 1130 (HY000): Host ‘localhost’ is not allowed to connect to this MySQL server www.jb51.net 出现原因: mysql只有一个root用户,修改root密码后选了MD5,提交后,重新 登陆出现“Host ‘localhost’ is...
java.sql.SQLException: null, message from server: “Host ‘223.72.41.7’ is not allowed to connect to this MySQL server” 客户端访问时报错: 解决方法: 1,登陆服务器 mysql> use mysql; //用mysql ...