XStream把xml转换为多个对象组合的JavaBean例子
2014-05-21 15:39
330 查看
下面是一个用XStream把xml数据转换为多个对象组合的javabean的例子:
xml报文格式:
<?xml version="1.0" encoding="GBK" standalone="no"?>
<B2CRes>
<interfaceName></interfaceName>
<interfaceVersion></interfaceVersion>
<orderInfo>
<orderDate></orderDate>
<curType></curType>
<merID></merID>
<subOrderInfoList>
<subOrderInfo>
<orderid></orderid>
<amount></amount>
<installmentTimes></installmentTimes>
<merAcct></merAcct>
<tranSerialNo></tranSerialNo>
</subOrderInfo>
……
<subOrderInfo>
<orderid></orderid>
<amount></amount>
<installmentTimes></installmentTimes>
<merAcct></merAcct>
<tranSerialNo></tranSerialNo>
</subOrderInfo>
</subOrderInfoList>
</orderInfo>
<custom>
<verifyJoinFlag></verifyJoinFlag>
<JoinFlag></JoinFlag>
<UserNum></UserNum>
</custom>
<bank>
<TranBatchNo></TranBatchNo>
<notifyDate></notifyDate>
<tranStat></tranStat>
<comment></comment>
</bank>
</B2CRes>
下面是对应xml的相关Java类:
public class SubOrderInfo {
private String orderid;//支付订单号
private String amount;//订单金额
private String installmentTimes;//分期付款期数1、3、6、9、12、18、24;1代表全额付款
private String merAcct;//商户账号
private String tranSerialNo;//银行指令序号
//......get set方法
}
public class Custom {
private String verifyJoinFlag;//检验联名标志
private String JoinFlag;//客户联名标志
private String UserNum;//联名会员号
//...get set方法
}
public class Bank {
private String TranBatchNo;//批次号
private String notifyDate;//返回通知日期时间 YYYYMMDDHHmmss
private String tranStat;//订单处理状态 1-交易成功,已清算 2-交易失败 3-交易可疑
private String comment;//备注
// get set方法
}
public class SubOrderInfoList {
private SubOrderInfo[] subOrderInfo; // SubOrderInfoList类里有多个subOrderInfo详细订单
// get set 方法
}
public class OrderInfo {
private String orderDate;
private String curType;
private String merID;
private SubOrderInfo[] subOrderInfoList; //List<SubOrderInfo> subOrderInfoList; 此处也可以这样写
// get set 方法
}
public class B2CRes {
private String interfaceName;
private String interfaceVersion;
private OrderInfo orderInfo;
private Custom custom;
private Bank bank;
//get set 方法
}
测试类;
public class TestXStream {
public static void main(String[] args) {
try {
String data="<?xml version=\"1.0\" encoding=\"GBK\" standalone=\"no\" ?><B2CRes><interfaceName>ICBC_PERBANK_B2C</interfaceName><interfaceVersion>1.0.0.11</interfaceVersion><orderInfo><orderDate>20100901162142</orderDate><curType>001</curType><merID>0200EC20001119</merID><subOrderInfoList><subOrderInfo><orderid>0000144</orderid><amount>100</amount><installmentTimes>1</installmentTimes><merAcct>0200026009018372212</merAcct><tranSerialNo>HFG000000000000421</tranSerialNo></subOrderInfo><subOrderInfo><orderid>201009011621421</orderid><amount>120</amount><installmentTimes>1</installmentTimes><merAcct>0200026009018372212</merAcct><tranSerialNo>HFG000000000000422</tranSerialNo></subOrderInfo></subOrderInfoList></orderInfo><custom><verifyJoinFlag>0</verifyJoinFlag><JoinFlag></JoinFlag><UserNum></UserNum></custom><bank><TranBatchNo>000000000000098</TranBatchNo><notifyDate>20100910174050</notifyDate><tranStat>1</tranStat><comment>交易成功!</comment></bank></B2CRes>";
XStream xstream = new XStream(new DomDriver());
//设置了这个别名才能识别下面 xml 中的 类对象节点的别名,否则要用类全限名称
xstream.alias("B2CRes", B2CRes.class);
xstream.alias("orderInfo", OrderInfo.class);
xstream.alias("subOrderInfo", SubOrderInfo.class);
xstream.alias("custom", Custom.class);
xstream.alias("bank", Bank.class);
B2CRes b2cres=(B2CRes)xstream.fromXML(data);
//从XML文件读取
//B2CRes b2cres=(B2CRes)xstream.fromXML(new FileReader(new File("D:/myworkspace/test/src/XStreamtest/b2cres/B2CRes22.xml")) );
System.out.println("接口名称:"+b2cres.getInterfaceName());
OrderInfo orderInfo=b2cres.getOrderInfo();
System.out.println("商户账号:"+orderInfo.getMerID());
SubOrderInfo subOrderInfo=orderInfo.getSubOrderInfoList()[0];
System.out.println("支付订单ID:"+subOrderInfo.getOrderid());
System.out.println("银行序列号:"+subOrderInfo.getTranSerialNo());
Custom custom=b2cres.getCustom();
System.out.println("检验联名标志:"+custom.getVerifyJoinFlag());
Bank bank=b2cres.getBank();
System.out.println("备注:"+bank.getComment());
} catch (Exception e) {
e.printStackTrace();
}
}
}
xml报文格式:
<?xml version="1.0" encoding="GBK" standalone="no"?>
<B2CRes>
<interfaceName></interfaceName>
<interfaceVersion></interfaceVersion>
<orderInfo>
<orderDate></orderDate>
<curType></curType>
<merID></merID>
<subOrderInfoList>
<subOrderInfo>
<orderid></orderid>
<amount></amount>
<installmentTimes></installmentTimes>
<merAcct></merAcct>
<tranSerialNo></tranSerialNo>
</subOrderInfo>
……
<subOrderInfo>
<orderid></orderid>
<amount></amount>
<installmentTimes></installmentTimes>
<merAcct></merAcct>
<tranSerialNo></tranSerialNo>
</subOrderInfo>
</subOrderInfoList>
</orderInfo>
<custom>
<verifyJoinFlag></verifyJoinFlag>
<JoinFlag></JoinFlag>
<UserNum></UserNum>
</custom>
<bank>
<TranBatchNo></TranBatchNo>
<notifyDate></notifyDate>
<tranStat></tranStat>
<comment></comment>
</bank>
</B2CRes>
下面是对应xml的相关Java类:
public class SubOrderInfo {
private String orderid;//支付订单号
private String amount;//订单金额
private String installmentTimes;//分期付款期数1、3、6、9、12、18、24;1代表全额付款
private String merAcct;//商户账号
private String tranSerialNo;//银行指令序号
//......get set方法
}
public class Custom {
private String verifyJoinFlag;//检验联名标志
private String JoinFlag;//客户联名标志
private String UserNum;//联名会员号
//...get set方法
}
public class Bank {
private String TranBatchNo;//批次号
private String notifyDate;//返回通知日期时间 YYYYMMDDHHmmss
private String tranStat;//订单处理状态 1-交易成功,已清算 2-交易失败 3-交易可疑
private String comment;//备注
// get set方法
}
public class SubOrderInfoList {
private SubOrderInfo[] subOrderInfo; // SubOrderInfoList类里有多个subOrderInfo详细订单
// get set 方法
}
public class OrderInfo {
private String orderDate;
private String curType;
private String merID;
private SubOrderInfo[] subOrderInfoList; //List<SubOrderInfo> subOrderInfoList; 此处也可以这样写
// get set 方法
}
public class B2CRes {
private String interfaceName;
private String interfaceVersion;
private OrderInfo orderInfo;
private Custom custom;
private Bank bank;
//get set 方法
}
测试类;
public class TestXStream {
public static void main(String[] args) {
try {
String data="<?xml version=\"1.0\" encoding=\"GBK\" standalone=\"no\" ?><B2CRes><interfaceName>ICBC_PERBANK_B2C</interfaceName><interfaceVersion>1.0.0.11</interfaceVersion><orderInfo><orderDate>20100901162142</orderDate><curType>001</curType><merID>0200EC20001119</merID><subOrderInfoList><subOrderInfo><orderid>0000144</orderid><amount>100</amount><installmentTimes>1</installmentTimes><merAcct>0200026009018372212</merAcct><tranSerialNo>HFG000000000000421</tranSerialNo></subOrderInfo><subOrderInfo><orderid>201009011621421</orderid><amount>120</amount><installmentTimes>1</installmentTimes><merAcct>0200026009018372212</merAcct><tranSerialNo>HFG000000000000422</tranSerialNo></subOrderInfo></subOrderInfoList></orderInfo><custom><verifyJoinFlag>0</verifyJoinFlag><JoinFlag></JoinFlag><UserNum></UserNum></custom><bank><TranBatchNo>000000000000098</TranBatchNo><notifyDate>20100910174050</notifyDate><tranStat>1</tranStat><comment>交易成功!</comment></bank></B2CRes>";
XStream xstream = new XStream(new DomDriver());
//设置了这个别名才能识别下面 xml 中的 类对象节点的别名,否则要用类全限名称
xstream.alias("B2CRes", B2CRes.class);
xstream.alias("orderInfo", OrderInfo.class);
xstream.alias("subOrderInfo", SubOrderInfo.class);
xstream.alias("custom", Custom.class);
xstream.alias("bank", Bank.class);
B2CRes b2cres=(B2CRes)xstream.fromXML(data);
//从XML文件读取
//B2CRes b2cres=(B2CRes)xstream.fromXML(new FileReader(new File("D:/myworkspace/test/src/XStreamtest/b2cres/B2CRes22.xml")) );
System.out.println("接口名称:"+b2cres.getInterfaceName());
OrderInfo orderInfo=b2cres.getOrderInfo();
System.out.println("商户账号:"+orderInfo.getMerID());
SubOrderInfo subOrderInfo=orderInfo.getSubOrderInfoList()[0];
System.out.println("支付订单ID:"+subOrderInfo.getOrderid());
System.out.println("银行序列号:"+subOrderInfo.getTranSerialNo());
Custom custom=b2cres.getCustom();
System.out.println("检验联名标志:"+custom.getVerifyJoinFlag());
Bank bank=b2cres.getBank();
System.out.println("备注:"+bank.getComment());
} catch (Exception e) {
e.printStackTrace();
}
}
}
相关文章推荐
- 使用xStream框架从JavaBean对象转换成XML文档转换成Java对象
- xStream完美转换XML、JSON /XStream Xml与JavaBean对象的互转经典【转载】
- 利用XStream在Java对象和XML之间相互转换
- xstream:实现JavaBean与XML/JSON的相互转换
- android 中XML和对象转换利器Xstream的使用
- XStream在Java对象和XML之间相互转换 工具类
- java通过xstream将xml转换为java对象遇到的问题(一个对像中两个子类的类名相同)
- 利用XStream在Java对象和XML之间相互转换
- android 中XML和对象转换利器Xstream的使用
- Xstream-xml和实体对象相互转换特殊问题
- android 中XML和对象转换利器Xstream的使用
- XStream实现javabean与xml之间相互转换
- android 中XML和对象转换利器Xstream的使用
- 利用XStream在Java对象和XML之间相互转换
- 使用 XStream实现JavaBean 与 XML/JSON 之间相互转换
- 两行代码轻松搞定XML和对象间相互转换. XStream 简单示例.
- android 中XML和对象转换利器Xstream的使用
- android 中XML和对象转换利器Xstream的使用
- android 中XML和对象转换利器Xstream的使用
- 利用XStream在Java对象和XML之间相互转换