浅谈Java拼接xml报文

2025-10-07 03:06:48

1、说到拼接我净爬敏们第一反应往往是想到StringBuffer str = new StringBuffer();

然后是耻侮一长串的append;对,没错 我也是!这种方式虽然看起来代码很整洁,但是不建议用,如果xml报文一旦特别长的话,在你的代码返排里一眼望去都是append看着好心累~

浅谈Java拼接xml报文

1、第二种方法就稍稍玩得高端一点,哥哥们先别着急,需要引一个dom4j的jar,先贴图。

浅谈Java拼接xml报文

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,相信大多数的项目里都用到这个包!

浅谈Java拼接xml报文

浅谈Java拼接xml报文

1、之前我也写过一篇解析xml报文的小篇,其中也是用的XStream;拼接xml这块同样适合!先引jar包xstream-1.4.4版本

浅谈Java拼接xml报文

2、然后根据我的xml报文格式建立相应的实体类;根节点是data,然后下面是两个子节点 head和body,注意得实现他们的get set方法哈!

浅谈Java拼接xml报文

浅谈Java拼接xml报文

3、然后是head节点下面又包含了一些节点,同样的我们也得建一个head的实体类,类里的字段都是对应head下面的子节点,实现get set方法!

浅谈Java拼接xml报文

4、然后是body节点下面又包含了一些节点,贴图了!

浅谈Java拼接xml报文

5、实体类都对应上了我们要拼接的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);

这种方式比较正规也是比较好的一种方法,把所有的入参都映射对象,强力推荐!!!

浅谈Java拼接xml报文

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢