java 封装xml报文 java生成xml报文
转载
方法/步骤-StringBuffer
- 1
说到拼接我们第一反应往往是想到StringBuffer str = new StringBuffer();
然后是一长串的append;对,没错 我也是!这种方式虽然看起来代码很整洁,但是不建议用,如果xml报文一旦特别长的话,在你的代码里一眼望去都是append看着好心累~
END
方法/步骤2-Document
- 1
第二种方法就稍稍玩得高端一点,哥哥们先别着急,需要引一个dom4j的jar,先贴图。
- 2
有jar包就好办了,接下来是具体的使用方法,图给你们代码也贴给你们,都是实际项目中用到的,没什么好吝啬!
/*拼接xml报文*/
Document document1;
//这是在创建一个根节点
Element root = DocumentHelper.createElement("data");
//把根节点变成一个Document 对象方便添加子节点
document1 = DocumentHelper.createDocument(root);
Element head = root.addElement("head");
Element log_id = head.addElement("log_id");//接口调用轨迹id
//setText里面的值是子节点<log_id>的值
log_id.setText(UUID.randomUUID().toString());
Element wsid = head.addElement("wsid");//接口id
wsid.setText("SLIS_NB_20150417_01");
Element sendtime = head.addElement("sendtime");//发送时间
sendtime.setText(PubFun.getCurrentYMDHMSS());
Element body = root.addElement("body");
Element agentcode = body.addElement("prtno");
agentcode.setText(prtno);
Element appntname = body.addElement("type");
appntname.setText(type);
Element paycount = body.addElement("salechnlflag");
paycount.setText(salechnlflag);
String requestXml = document1.asXML();
requestXml打印出来就是如第二张图的样子了,我为了让大家看得清楚一点就拿出来格式化了一下,data是根节点,然后就是<head>和<body>两个子节点,一目了然。这种方式也是比较常见的一种,引用dom4j,相信大多数的项目里都用到这个包!
END
方法/步骤3-XStream
- 之前我也写过一篇解析xml报文的小篇,其中也是用的XStream;拼接xml这块同样适合!先引jar包xstream-1.4.4版本
- 然后根据我的xml报文格式建立相应的实体类;根节点是data,然后下面是两个子节点 head和body,注意得实现他们的get set方法哈!
- 然后是head节点下面又包含了一些节点,同样的我们也得建一个head的实体类,类里的字段都是对应head下面的子节点,实现get set方法!
- 然后是body节点下面又包含了一些节点,贴图了!
- 实体类都对应上了我们要拼接的xml报文节点之后然后就是组装起来了!贴图贴代码大家看看吧。
// 生成请求xml报文
Head head = new Head();
head.setWsid("SLIS_NB_20150417_06"); // 接口id
head.setLog_id(UUID.randomUUID().toString()); // log的id,uuid
head.setSendtime(PubFun.getCurrentYMDHMSS()); // 接口调用时间,格式为yyyymmddhhmissfff,精确要毫秒
Body body = new Body();
body.setAgentcode(agentcode);
body.setAgenttype(agenttype);
Data data = new Data();
data.setHead(head);
data.setBody(body);
XStream xstream = new XStream();
xstream.alias("data", Data.class);
xstream.alias("head", Head.class);
xstream.alias("body", Body.class);
String requestXml = data.headInfo + xstream.toXML(data);
这种方式比较正规也是比较好的一种方法,把所有的入参都映射对象,强力推荐!!!
本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。