java操作XML转对象,对象装xml

先创建要转换的对象
java转xml教程学习

java转xml学习教程

@Setter
@Getter
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name ="Request")
public class Request{
  
    @XmlElement(name = "CompID", required = true)
    private String compId;

    @XmlElement(name = "CustID", required = true)
    private String custId;
	//XmlElementWrapper注解为包装的一层
    @XmlElementWrapper(name = "Items")
    @XmlElement(name = "WithdrawalsRequestItem")
    private List<RequestCancelItem> items;
}
@Setter
@Getter
@XmlAccessorType(XmlAccessType.FIELD)
public class RequestCancelItem {

    @XmlElement(name = "Cust_OrderCode", required = true)
    private String custOrderCode;

    @XmlElement(name = "OrderType", required = true)
    private String orderType;
    }
//xml转换为对象
public static Request  xmlToObject(Request request, String xmlStr) {
        try{
            JAXBContext context = JAXBContext.newInstance(clazz);
            // XML 转为对象的接口
            Unmarshaller unmarshaller = context.createUnmarshaller();
            Reader reader = new StringReader(xmlStr);
            Object xmlObject = unmarshaller.unmarshal(reader);
            if (null != reader) {
                reader.close();
            }
            return (Request)xmlObject;
        }catch (Exception e){
            logger.error("XML转对象异常", e);
            throw new ServiceException("XML转对象异常");
        }
    }
    //对象转xml
public static String object2XmlStr(Object obj, String xmlHeader, String encoding) {
        // 创建输出流
        StringWriter sw = new StringWriter();
        if (StringUtils.isNotEmpty(xmlHeader)) {
            sw.write(xmlHeader);
            sw.write(System.lineSeparator());
        }
        Marshaller marshaller = null;
        try {
            JAXBContext context = JAXBContext.newInstance(obj.getClass());
            marshaller = context.createMarshaller();
            // 格式化xml输出的格式
            marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
            marshaller.setProperty(Marshaller.JAXB_ENCODING, StringUtils.isNotEmpty(encoding) ? encoding : DEFAULT_ENCODING);
            // 格式化xml输出格式,并去除 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
            marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);
            // 将对象转换成输出流形式的xml
            marshaller.marshal(obj, sw);
        } catch (JAXBException e) {
            logger.error("对象转XML异常", e);
            return "";
        }
        return sw.toString();
    }    

对象转xml后为

<Request>
    <CompID>1100000488</CompID>
    <CustID>1300000700</CustID>
    <Items>
        <WithdrawalsRequestItem>
            <custOrderCode>1</custOrderCode>
            <OrderType>1100000488</OrderType>
        </WithdrawalsRequestItem>
    </Items>
</Request>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值