首页
视频
留言
壁纸
直播
下载
友链
统计
推荐
vue
在线工具
Search
1
ElasticSearch ES 安装 Kibana安装 设置密码
421 阅读
2
记一个报错GC overhead limit exceeded解决方法
344 阅读
3
Teamcity + Rancher + 阿里云Code 实现Devops 自动化部署
230 阅读
4
JAVA秒杀系统的简单实现(Redis+RabbitMQ)
209 阅读
5
分布式锁Redisson,完美解决高并发问题
206 阅读
JAVA开发
前端相关
Linux相关
电商开发
经验分享
电子书籍
个人随笔
行业资讯
其他
登录
/
注册
Search
标签搜索
AOP
支付
小说
docker
SpringBoot
XML
秒杀
K8S
RabbitMQ
工具类
Shiro
多线程
分布式锁
Redisson
接口防刷
Jenkins
Lewis
累计撰写
146
篇文章
累计收到
14
条评论
首页
栏目
JAVA开发
前端相关
Linux相关
电商开发
经验分享
电子书籍
个人随笔
行业资讯
其他
页面
视频
留言
壁纸
直播
下载
友链
统计
推荐
vue
在线工具
搜索到
2
篇与
的结果
2021-10-26
XStream生成XMl文件,设置别名
{card-describe title="前言"} 一般来说通过现在给接口发送数据都用JSON格式,但是给例如银行这些平台进行数据传输的时候还可能使用XML格式的报文,XML格式的报文通常会包含HEAD、BODY等节点数据,我们可以将业务数据通过XStream进行处理,可以以下面的代码进行参考:{/card-describe}{dotted startColor="#ff6c6c" endColor="#1989fa"/}public class B2BPayToXml { public Head head; public Body body; public void setHead(Head head) { this.head = head; } public void setBody(Body body) { this.body = body; } }/** * 报文头部信息 * @author lizhiyong * @version $Id: Head.java, v 0.1 2014年9月24日 上午10:01:57 Exp $ */ public class Head { public String MerPtcId; public String TranTime; public String TranCode; public String TranDate; public Head(String merPtcId, String tranTime, String tranCode, String tranDate) { MerPtcId = merPtcId; TranTime = tranTime; TranCode = tranCode; TranDate = tranDate; } }/** * 报文体信息 * @author lizhiyong * @version $Id: Body.java, v 0.1 2014年9月24日 上午10:03:30 Exp $ */ public class Body { public String MerTranSerialNo; public String SafeReserved; //协议信息 public PtcInfo ptcInfo; //业务信息 public BusiInfo busiInfo; //会员信息 public UserInfo userInfo; //商品信息 public GoodsInfo goodsInfo; //交易信息 public TranInfo tranInfo; //通道信息 public ChannelInfo channelInfo; //备注信息 public MemoInfo memoInfo; public void setMerTranSerialNo(String merTranSerialNo) { MerTranSerialNo = merTranSerialNo; } public void setSafeReserved(String safeReserved) { SafeReserved = safeReserved; } public void setPtcInfo(PtcInfo ptcInfo) { this.ptcInfo = ptcInfo; } public void setBusiInfo(BusiInfo busiInfo) { this.busiInfo = busiInfo; } public void setUserInfo(UserInfo userInfo) { this.userInfo = userInfo; } public void setGoodsInfo(GoodsInfo goodsInfo) { this.goodsInfo = goodsInfo; } public void setTranInfo(TranInfo tranInfo) { this.tranInfo = tranInfo; } public void setChannelInfo(ChannelInfo channelInfo) { this.channelInfo = channelInfo; } public void setMemoInfo(MemoInfo memoInfo) { this.memoInfo = memoInfo; } }/** * 会员信息 * @author lizhiyong * @version $Id: UserInfo.java, v 0.1 2014年9月24日 上午10:08:47 Exp $ */ public class UserInfo { public String BuyerId; public String BuyerName; public String SellerId; public String SellerName; public UserInfo(String buyerId, String buyerName, String sellerId, String sellerName) { BuyerId = buyerId; BuyerName = buyerName; SellerId = sellerId; SellerName = sellerName; } }XStream xStream = new XStream(new DomDriver()); xStream.alias("Document", B2BPayToXml.class); //设置类别名 xStream.aliasField("Head", B2BPayToXml.class, "head"); xStream.aliasField("Body", B2BPayToXml.class, "body"); xStream.aliasField("PtcInfo", Body.class, "ptcInfo"); xStream.aliasField("BusiInfo", Body.class, "busiInfo"); xStream.aliasField("UserInfo", Body.class, "userInfo"); xStream.aliasField("GoodsInfo", Body.class, "goodsInfo"); xStream.aliasField("TranInfo", Body.class, "tranInfo"); xStream.aliasField("ChannelInfo", Body.class, "channelInfo"); xStream.aliasField("MemoInfo", Body.class, "memoInfo"); B2BPayToXml bToXml = new B2BPayToXml(); //头部信息 bToXml.setHead(new Head(merPtcId, tranTime, tranCode, tranDate)); //协议信息 PtcInfo ptcInfo = new PtcInfo(subMerPtcId); //业务信息 BusiInfo busiInfo = new BusiInfo(merOrderNo); //会员信息 UserInfo userInfo = new UserInfo(buyerId, buyerName, sellerId, sellerName); //商品信息 GoodsInfo goodsInfo = new GoodsInfo(goodsName, goodsTxt, goodsDesc); //交易信息 TranInfo tranInfo = new TranInfo(tranModeId, tranAmt, tranCry); //通道信息 ChannelInfo channelInfo = new ChannelInfo(channelApi, channelInst); //备注信息 MemoInfo memoInfo = new MemoInfo(buyerMemo, sellerMemo, platMemo, payMemo); Body body = new Body(); body.setMerTranSerialNo(merTranSerialNo); body.setSafeReserved(safeReserved); body.setPtcInfo(ptcInfo); body.setBusiInfo(busiInfo); body.setUserInfo(userInfo); body.setGoodsInfo(goodsInfo); body.setTranInfo(tranInfo); body.setChannelInfo(channelInfo); body.setMemoInfo(memoInfo); bToXml.setBody(body); String top = "<?xml version=\"1.0\" encoding=\"UTF-8\"?> \n"; String xml = top + xStream.toXML(bToXml);<?xml version="1.0" encoding="UTF-8"?> <Document> <Head> <MerPtcId>0000</MerPtcId> <TranTime>0000</TranTime> <TranCode>0000</TranCode> <TranDate>0000</TranDate> </Head> <Body> <MerTranSerialNo>0000</MerTranSerialNo> <SafeReserved>0000</SafeReserved> <PtcInfo> <SubMerPtcId>0000</SubMerPtcId> </PtcInfo> <BusiInfo> <MerOrderNo>0000</MerOrderNo> </BusiInfo> <UserInfo> <BuyerId>0000</BuyerId> <BuyerName>0000</BuyerName> <SellerId>0000</SellerId> <SellerName>0000</SellerName> </UserInfo> <GoodsInfo> <GoodsName>0000</GoodsName> <GoodsTxt>0000</GoodsTxt> <GoodsDesc>0000</GoodsDesc> </GoodsInfo> <TranInfo> <TranModeId>0000</TranModeId> <TranAmt>0000</TranAmt> <TranCry>0000</TranCry> </TranInfo> <ChannelInfo> <ChannelApi>0000</ChannelApi> <ChannelInst>0000</ChannelInst> </ChannelInfo> <MemoInfo> <BuyerMemo>0000</BuyerMemo> <SellerMemo>0000</SellerMemo> <PlatMemo>0000</PlatMemo> <PayMemo>0000</PayMemo> </MemoInfo> </Body> </Document>
2021年10月26日
89 阅读
0 评论
0 点赞
2021-03-05
超强大的XML和JavaBean相互转换的工具类
话不多说,直接上代码import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.Reader; import java.io.StringWriter; import java.text.MessageFormat; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; import javax.xml.bind.Unmarshaller; import javax.xml.stream.XMLOutputFactory; import javax.xml.stream.XMLStreamWriter; /** * @Description:xml字符串转换Javabean * @author:lgh * @date: 2018-11-20 10:55 */ public class JaxbUtils { @SuppressWarnings("unchecked") private static <T> T readString(Class<T> clazz, String context) throws JAXBException { try { JAXBContext jc = JAXBContext.newInstance(clazz); Unmarshaller u = jc.createUnmarshaller(); return (T) u.unmarshal(new File(context)); } catch (JAXBException e) { throw e; } } @SuppressWarnings("unchecked") private static <T> T readConfig(Class<T> clazz, String config, Object... arguments) throws IOException, JAXBException { InputStream is = null; try { if (arguments.length > 0) { config = MessageFormat.format(config, arguments); } JAXBContext jc = JAXBContext.newInstance(clazz); Unmarshaller u = jc.createUnmarshaller(); is = new FileInputStream(config); return (T) u.unmarshal(is); } catch (IOException e) { throw e; } catch (JAXBException e) { throw e; } finally { if (is != null) { is.close(); } } } @SuppressWarnings("unchecked") private static <T> T readConfigFromStream(Class<T> clazz, InputStream dataStream) throws JAXBException { try { JAXBContext jc = JAXBContext.newInstance(clazz); Unmarshaller u = jc.createUnmarshaller(); return (T) u.unmarshal(dataStream); } catch (JAXBException e) { // logger.trace(e); throw e; } } @SuppressWarnings("unchecked") private static <T> T readConfigFromRead(Class<T> clazz, Reader reader)throws JAXBException { try { JAXBContext jc = JAXBContext.newInstance(clazz); Unmarshaller u = jc.createUnmarshaller(); return (T) u.unmarshal(reader); } catch (JAXBException e) { // logger.trace(e); throw e; } } /** * xml转换成java bean * @param xml * @param clazz * @return * @throws JAXBException */ public static <T> T jaxbConvertXmlToBean(String xml,Class<T> clazz) { InputStream is = null; try { is = new ByteArrayInputStream(xml.getBytes("UTF-8")); } catch (Exception e) { e.printStackTrace(); }finally{ if (is != null) { try { is.close(); } catch (IOException e) { e.printStackTrace(); } } } T t = null; try { t = JaxbUtils.readConfigFromStream(clazz, is); } catch (JAXBException e) { e.printStackTrace(); } return t; } /** * java bean 转换成xml * @param object * @return * @throws JAXBException */ public static String jaxbConvertBeanToXml(Object object)throws JAXBException { StringWriter writer = new StringWriter(); String returnString =""; try { JAXBContext jc = JAXBContext.newInstance(object.getClass()); Marshaller m = jc.createMarshaller(); m.setProperty(Marshaller.JAXB_ENCODING, "UTF-8"); m.marshal(object, writer); returnString=writer.toString(); } catch (Exception e) { e.printStackTrace(); }finally{ if(writer!=null){ try { writer.close(); } catch (IOException e) { e.printStackTrace(); } } } return returnString; } public static String jaxbBeanToxml(Object object){ try { JAXBContext jaxbContext = JAXBContext.newInstance(object.getClass()); Marshaller jaxbMarshaller = jaxbContext.createMarshaller(); jaxbMarshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8"); jaxbMarshaller.setProperty(Marshaller.JAXB_FRAGMENT, true); ByteArrayOutputStream baos = new ByteArrayOutputStream(); XMLStreamWriter xmlStreamWriter = XMLOutputFactory.newInstance().createXMLStreamWriter(baos, (String) jaxbMarshaller.getProperty(Marshaller.JAXB_ENCODING)); xmlStreamWriter.writeStartDocument((String) jaxbMarshaller.getProperty(Marshaller.JAXB_ENCODING), "1.0"); jaxbMarshaller.marshal(object, xmlStreamWriter); xmlStreamWriter.writeEndDocument(); xmlStreamWriter.close(); return new String(baos.toByteArray(),"UTF-8"); } catch (Exception e) { } return null; } public static String jaxbBeanToxmlGBK(Object object){ try { JAXBContext jaxbContext = JAXBContext.newInstance(object.getClass()); Marshaller jaxbMarshaller = jaxbContext.createMarshaller(); jaxbMarshaller.setProperty(Marshaller.JAXB_ENCODING, "GBK"); jaxbMarshaller.setProperty(Marshaller.JAXB_FRAGMENT, true); ByteArrayOutputStream baos = new ByteArrayOutputStream(); XMLStreamWriter xmlStreamWriter = XMLOutputFactory.newInstance().createXMLStreamWriter(baos, (String) jaxbMarshaller.getProperty(Marshaller.JAXB_ENCODING)); xmlStreamWriter.writeStartDocument((String) jaxbMarshaller.getProperty(Marshaller.JAXB_ENCODING), "1.0"); jaxbMarshaller.marshal(object, xmlStreamWriter); xmlStreamWriter.writeEndDocument(); xmlStreamWriter.close(); return new String(baos.toByteArray(),"GBK"); } catch (Exception e) { e.printStackTrace(); } return null; } /** * xml转换成java bean * @param xml * @param clazz * @return * @throws JAXBException */ public static <T> T jaxbConvertXmlToBeanByGbk(String xml,Class<T> clazz) { InputStream is = null; try { is = new ByteArrayInputStream(xml.getBytes("GBK")); } catch (Exception e) { e.printStackTrace(); }finally{ if (is != null) { try { is.close(); } catch (IOException e) { e.printStackTrace(); } } } T t = null; try { t = JaxbUtils.readConfigFromStream(clazz, is); } catch (JAXBException e) { e.printStackTrace(); } return t; } }针对上述工具类,给记得给JavaBean加上相应注解如下:@XmlAccessorType(XmlAccessType.FIELD) @XmlRootElement(name = "TransType") @Data public class TransType { @XmlElement(name = "BaseInfo",required = true) protected BaseInfo baseInfo; @XmlElement(name = "OutputData",required = true) protected OutputData outputData; }
2021年03月05日
64 阅读
0 评论
0 点赞