如何快速构建xml

很多的时候,我们都需要通过构建xml来发送报文信息,相对于json来说,xml格式的报文简单明了,一看就清楚,所以很多的公司在要求传送报文的格式的时候,一般比较乐意xml格式,除非考虑到效率的问题,才会选择json格式,那么我们应该如快速构建xml,并且以String 的类型传送给客户。

这里,我来简单介绍一下:

private String createXML(List<Map<String, Object>> headList,List<Map<String, Object>> bodyList) {
String result = "";
//循环表头数据
for (Map<String, Object> map : headList) {
//创建根节点,并设置它的属性
Element Request = new Element("Request");    
       // 将根节点添加到文档中;     
       Document document = new Document(Request); 
       //创建节点 
       Element TransId = new Element("TransId").setText("0001289349");
       Element AccountId = new Element("AccountId").setText("18422"); 
       Element OrderInfo = new Element("OrderInfo");
       //将节点添加到文档中
       Request.addContent(TransId);
       Request.addContent(AccountId);        
       //添加元素节点
       OrderInfo.addContent(new Element("PlantId").setText(map.get("csenddeptvid").toString())); //仓库
       OrderInfo.addContent(new Element("ExternDocId").setText(map.get("vbillcode").toString())); //发货单号
       OrderInfo.addContent(new Element("EcomOrderId").setText(map.get("cdeliveryid").toString())); //发货单ID
       OrderInfo.addContent(new Element("ReferenceId").setText(""));
       OrderInfo.addContent(new Element("OrderDate").setText(""));
       OrderInfo.addContent(new Element("Priority").setText(""));
       OrderInfo.addContent(new Element("OrderType").setText("NORMAL"));//订单类型 :默认为NORMAL
       OrderInfo.addContent(new Element("StoreName").setText(""));
       OrderInfo.addContent(new Element("Platform").setText(""));
       OrderInfo.addContent(new Element("PaymentTerm").setText(""));
       OrderInfo.addContent(new Element("PaymentDate").setText(""));
       OrderInfo.addContent(new Element("InvoiceAmount").setText(""));
       OrderInfo.addContent(new Element("InsuredAmount").setText(""));
       OrderInfo.addContent(new Element("CarrierCharges").setText(""));
       OrderInfo.addContent(new Element("OtherCharges").setText(""));
       OrderInfo.addContent(new Element("PayableAmount").setText(""));
       OrderInfo.addContent(new Element("TrackingNo").setText(""));
       OrderInfo.addContent(new Element("DeliveryPlace").setText(""));
       OrderInfo.addContent(new Element("ArrivalDate").setText(""));
       OrderInfo.addContent(new Element("ArrivalTime").setText(""));
       OrderInfo.addContent(new Element("DeliveryMode").setText(""));
       OrderInfo.addContent(new Element("CarrierName").setText(""));
       OrderInfo.addContent(new Element("DeliveryCategory").setText(""));
       OrderInfo.addContent(new Element("DeliveryNote").setText(""));                
               
       Element BuyerInfo = new Element("BuyerInfo");        
       BuyerInfo.addContent(new Element("BuyerId").setText(map.get("code").toString()));  //门店编码
       BuyerInfo.addContent(new Element("BuyerName").setText(map.get("name").toString()));   //门店名称
       BuyerInfo.addContent(new Element("Zip").setText(map.get("postcode").toString()));   //邮编
       BuyerInfo.addContent(new Element("Mobile").setText("")); //
       BuyerInfo.addContent(new Element("Tel").setText(""));
       BuyerInfo.addContent(new Element("State").setText(map.get("country").toString())); //国家
       BuyerInfo.addContent(new Element("City").setText(map.get("city").toString()));  //城市
       BuyerInfo.addContent(new Element("Province").setText(map.get("province").toString())); //省份
       BuyerInfo.addContent(new Element("Address").setText(map.get("detailinfo").toString())); //地址
       OrderInfo.addContent(BuyerInfo);
       
       Element Comments = new Element("Comments");
       Comments.addContent(new Element("Comment1").setText(""));
       Comments.addContent(new Element("Comment2").setText(""));
       OrderInfo.addContent(Comments);
       
       OrderInfo.addContent(new Element("PrintFlag").setText(""));
       OrderInfo.addContent(new Element("PreSaleFlag").setText("")); //销售标识:默认为空
       OrderInfo.addContent(new Element("FinalFlag").setText(""));
       OrderInfo.addContent(new Element("TotalLines").setText(""));
       OrderInfo.addContent(new Element("CurrReq").setText(""));
       OrderInfo.addContent(new Element("TotalLeft").setText(""));
      
       Element OrderDetailInfo = new Element("OrderDetailInfo"); 
       //循环订单明细
       for(int i=0;i< bodyList.size();i++){
        Element ItemInfo = new Element("ItemInfo"); 
           OrderDetailInfo.addContent(ItemInfo); 
           ItemInfo.addContent(new Element("OrderItemLine").setText(bodyList.get(i).get("crowno").toString())); //退货单行号
           ItemInfo.addContent(new Element("ItemId").setText(bodyList.get(i).get("code").toString())); //物料编码
           ItemInfo.addContent(new Element("ItemQty").setText(bodyList.get(i).get("nnum").toString())); //数量
           ItemInfo.addContent(new Element("UnitPrice").setText(""));
           Element Comments1 = new Element("Comments"); 
           
           Comments1.addContent(new Element("Comments1").setText(""));
           Comments1.addContent(new Element("Comments2").setText(""));
           ItemInfo.addContent(Comments1);
       }
       OrderInfo.addContent(OrderDetailInfo);
       
       //循环InvoiceInfo
       Element InvoiceInfo = new Element("InvoiceInfo");        
       for (int i = 0; i < bodyList.size(); i++) {
        Element InvoiceItem = new Element("InvoiceItem"); 
           
           InvoiceItem.addContent(new Element("SNo").setText(""));
           InvoiceItem.addContent(new Element("Amount").setText(""));
           InvoiceItem.addContent(new Element("Type").setText(""));
           InvoiceItem.addContent(new Element("Title").setText(""));
           InvoiceItem.addContent(new Element("Content").setText(""));
           InvoiceInfo.addContent(InvoiceItem); 
}
       OrderInfo.addContent(InvoiceInfo);
      //将Request节点添加到文档中     
       Request.addContent(OrderInfo);
       
       //设置xml的格式
       Format format = Format.getPrettyFormat();  
       XMLOutputter XMLOut = new XMLOutputter(format);
       //以字符串形式输出xml
       result = XMLOut.outputString(document);

}
return result.toString();

}

这个是我之前做的一个项目,这里就需要构建一个xml格式的报文传送给用户。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值