XML与对象的相互转换
最近在对接海关的接口,接口采用的是WebService接口,关于怎么获取webservice的wsdl文件请参考
根据wsdl文件生成客户端代码
好啦回归主题,由于WebService需要传输的数据格式大多为xml格式,苦苦查询后我采用了最适合自己的一种方式,通过Document对象来拼接xml文档数据,根据接口文档的节点创建对象。
上代码:
public String NowCustoms(OrderInfoList orderInfoList){
//==========================================
OrderInfo orderInfo=orderInfoList.getOrderInfo();
/*
* 签名信息
*/
JkfSign jkfSign=orderInfo.getJkfSign();
/**
* 订单信息
*
*/
JkfOrderImportHead jkfOrderImportHead=orderInfo.getJkfOrderImportHead();
/*
购买人信息
*/
JkfGoodsPurchaser jkfGoodsPurchaser=orderInfo.getJkfGoodsPurchaser();
//==========================================
Element mo = new Element("mo");
mo.setAttribute("version","1.0.0");
Document doc = new Document(mo);
Element head = new Element("head");
Element businessType=new Element("businessType").setText("IMPORTORDER");
Element body=new Element("body");
//--------
Element orderInfoListElement=new Element("orderInfoList");
Element orderInfoElement=new Element("orderInfo");
//jkfSign录入xml文件
Element jkfSignElement=new Element("jkfSign");
...
jkfSignElement.addContent(new Element("note").setText(jkfSign.getNote()));
//jkfOrderImportHead录入xml文件
Element jkfOrderImportHeadElement=new Element("jkfOrderImportHead");
...
jkfOrderImportHeadElement.addContent(new Element("consigneeDitrict").setText(jkfOrderImportHead.getConsigneeDitrict()));
//订单表体明细
/**
* 订单表体
*/
JkfOrderDetailList jkfOrderDetailList=orderInfo.getJkfOrderDetailList();
List<JkfOrderDetail> jkList=jkfOrderDetailList.getJkfOrderDetail();
//订单表体
Element jkfOrderDetailListElement=new Element("jkfOrderDetailList");
for (int i = 0; i < jkList.size(); i++) {
Element jaeOrderDetailElement=new Element("jkfOrderDetail");
/**
* 订单表体明细
*/
JkfOrderDetail jkfOrderDetail=jkList.get(i);
jaeOrderDetailElement.addContent(new Element("goodsOrder"