Velocity组装Xml报文

组装报文代码

/**
     * 请求XML组装
     * @param bizNo
     * @return
     */
    public String createRequestXml(PolicyApplication app,String xmlPath,String resType) throws Exception {
        String rspXml = "";
        try {
            String userInfo = DeploymentConfig.getProperty("GD_PLAT_USER");//获取平台用户密码
            Properties p = new Properties();
            p.put("input.encoding", "UTF-8");
            p.put("output.encoding", "UTF-8");
            p.put("resource.loader", "srl");
            p.put("srl.resource.loader.class",FlatXMLTemplateLoader.class.getName());
            VelocityEngine veloEngine = new VelocityEngine();
            veloEngine.init(p);
            Template template = veloEngine.getTemplate(xmlPath);
            VelocityContext velocityContext = new VelocityContext();
            velocityContext.put("SEARCH",xmlPath);// 模板路径
            BaseDTO baseDto = new BaseDTO(app);
            velocityContext.put("resType",resType);
            velocityContext.put("userName",userInfo.split("-")[0]);
            velocityContext.put("userPass",userInfo.split("-")[1]);
            velocityContext.put("app",baseDto);
            StringWriter sw = new StringWriter();
            template.merge(velocityContext,sw);
            sw.close();
            rspXml = sw.toString();
        } catch (Exception e) {
            logger.info(e.getMessage());
            e.printStackTrace();
        }
        return rspXml;
    }

报文模版

<?xml version="1.0" encoding="UTF-8"?>
<PACKET type="RESPONSE" version="1.0">
    <HEAD>
        <REQUEST_TYPE>$!resType</REQUEST_TYPE>
        <USER>$!userName</USER>
        <PASSWORD>$!userPass</PASSWORD>
    </HEAD>
    #set($base = $app.getBase())
    #set($insured = $app.getInsured())
    <BASE_PART>
        <QUOTE_NO>$!base.CQteNo</QUOTE_NO>
        <POLICY_CODE>$!insured.CCertfCde</POLICY_CODE>
        <POLICY_NAME>$!insured.CInsuredNme</POLICY_NAME>
        <PRODUCT_NO>001</PRODUCT_NO>
        <PREMIUM_RATE>$!app.getFormatRate($!base.CProdNo,$!base.CTrdCde)</PREMIUM_RATE>
        <TRANS_DATE>$!app.date2Str(null)</TRANS_DATE>
        <PRODUCT_LIST>
            #foreach ($cvrg in $!app.getCoverages())
                #if((("010002"==$!cvrg.CCvrgNo) || ("010003"==$!cvrg.CCvrgNo) ||  ("010004"==$!cvrg.CCvrgNo)) && $!app.isShenzhen($!cvrg.CResvTxt18))
                <PRODUCT_COMP>
                    <INDUSTRY_TYPE>$!base.CTrdCde</INDUSTRY_TYPE>
                    <INSURE_CDE>$!app.getAttrNmeBySQL("CCvrgNo",$!cvrg.CCvrgNo)</INSURE_CDE>
                    <LOSS_FREE_RATE>$!app.getFormatDuctRate($!base.NDductRate)</LOSS_FREE_RATE>
                    <LOSS_FREE_AMT>$!base.NDductAmt</LOSS_FREE_AMT>
                    <PREMIUM_RATE>$!app.getFormatRate($!base.CProdNo,$!cvrg.NRate,$!base.CTrdCde)</PREMIUM_RATE>
                </PRODUCT_COMP>
                #end
            #end
        </PRODUCT_LIST>
    </BASE_PART>
</PACKET>
时间: 2024-10-08 10:27:47

Velocity组装Xml报文的相关文章

帮助小伙伴写的组装xml字符串类

1 import java.io.IOException; 2 import java.io.StringWriter; 3 import java.util.ArrayList; 4 import java.util.HashMap; 5 import java.util.Iterator; 6 import java.util.List; 7 import java.util.Map; 8 import java.util.Map.Entry; 9 import org.dom4j.Docu

dom4j组装xml 以及解析xml

dom4j组装xml 以及解析xml: 1.下载dom4j的jar包,地址:https://dom4j.github.io/ 2.java代码: package test; import java.io.File; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap;

Jaxb对xml报文头的小修小改

前言: 也是在实际工作中, 借助jaxb来实现xml到java对象的映射转换. 在实际应用中, 也遇到了一些有趣好玩的东西, 权当记录下来. 本文主要讲解jaxb如何生成约定的xml报文头的实现思路, 点比较小, 而且方法有点trick, 因此导致取博文标题的时候, 也有些小迷茫, ^_^. 现象: 我们先来定义一个简单的java类, 并用于生成其对应的xml内容. @Getter @Setter @NoArgsConstructor @AllArgsConstructor @XmlAccess

解析xml报文,xml与map互转

这段时间写了一个关于xml报文的工具类,做一下具体的讲解: xml文本 <NTMMessage version="1.03"> <NTMHeader> <MessageID>1711030000054</MessageID> <MessageSource> <SystemID>MNLN</SystemID> <Location>CITIC</Location> <UserI

dom4j创建xml报文并生成

我使用的是dom4j创建xml报文 1.创建root节点 Document document = DocumentHelper.createDocument(); Element root = DocumentHelper.createElement("RBSPMessage"); document.setRootElement(root); 2.在root节点下添加节点 Element Version = root.addElement("Version"); E

java 如何解析http请求返回的xml报文

xml报文解析方法有很多种,此处采用dom4j的方法. dom4j的jar包下载地址:https://dom4j.github.io/# 1.request.getInputStream()和new SAXReader().read(输入流): 返回的报文如下: <?xml version="1.0" encoding="UTF-8"?><CreateAccessKeyResponse> <CreateAccessKeyResult&g

dom4j解析xml报文

package com.answern.claimv2.service.utils; import com.alibaba.dubbo.common.utils.IOUtils; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.Element; import java.io.File; import java.util.

Java对象转xml报文和xml报文转Java对象帮助类

import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; import javax.xml.bind.Unmarshaller; import java.io.StringReader; import java.io.StringWriter; import java.io.Writer; /** * xml和java对象转换帮助类 * Cre

利用sed将xml报文转换为分隔符形式报文

原始xml文本如下 1 <?xml version="1.0" encoding="utf-8"?> 2 <Message> 3 <Header> 4 <Version>2000000</Version> 5 <MessageClass>5</MessageClass> 6 <MessageType>7</MessageType> 7 <SenderId