dto与xml互转(使用jdk的xml注解实现)

本文介绍了如何使用Java的JAXB库将XML字符串转换为对象,并展示了如何通过@XmlSchema、@XmlElement、@XmlAttribute等注解来定义XML结构。作者通过一个下午的摸索,成功实现了XML到Java对象的映射,并分享了实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

效果实现图:

 

难度不大主要是之前自己对于jdk下面的xml包没有用过,摸索了一个下午才拼凑出来想要的效果,下面根据报文从上往下解释代码跟注解:

 首先是package-info.java上加上包注解@XmlSchema,这个文件也是第一次使用,可以理解成包级别的统一注释

接下来就是报文体:

因为ase那一块大概率需要复用所以将它抽出去了,最终就是这个testase对象包含了Header与Transactions两块内容

最后是内容:

 

 

 

这样基本就完成了,主要要知道几个注解的用法,里面主要涉及了xmlelement,xmlattribute,xmlvalue,可以根据实现效果理解一下就行了,如果没接触过的话看了看注解的注释也没太明白所以试了试耽误了些时间

剩下的就是弄一个xmlutil了:

 

public class XMLUtil {

    public static final String DEFAULT_ENCODING = "UTF-8";

    public static <R> R xml2Dto(String xmlStr, Class<R> clazz) throws JAXBException {
        JAXBContext context = JAXBContext.newInstance(clazz);
        // 进行将Xml转成对象的核心接口
        Unmarshaller unmarshaller = context.createUnmarshaller();
        StringReader sr = new StringReader(xmlStr);
        R r = (R) unmarshaller.unmarshal(sr);

        return r;

    }

    public static String dto2Xml(Object o) throws Exception {
        return convertToXml(o, DEFAULT_ENCODING);
    }

    private static String convertToXml(Object obj, String encoding) throws Exception {
        JAXBContext context = JAXBContext.newInstance(obj.getClass());
        Marshaller marshaller = context.createMarshaller();
        // 指定是否使用换行和缩排对已编组 XML 数据进行格式化的属性名称。
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
        marshaller.setProperty(Marshaller.JAXB_ENCODING, encoding);

        StringWriter writer = new StringWriter();
        marshaller.marshal(obj, writer);
        String result = writer.toString();

        return result;
    }

网上抄的现成的,改改入参的事 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值