用的是jdk自带的javax.xml.bind.JAXBContext将对象和xml字符串进行相互转换

封装的工具类XMLUtil

package com.ddwl.api.utils;


import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import java.io.StringWriter;

public class XMLUtil {
    
    public static String convertToXml(Object obj) {
        StringWriter sw = new StringWriter();
        try {
            JAXBContext context = JAXBContext.newInstance(obj.getClass());
            Marshaller marshaller = context.createMarshaller();
            marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,
                    Boolean.TRUE);
            marshaller.marshal(obj, sw);
        } catch (JAXBException e) {
            e.printStackTrace();
        }
        return sw.toString().replace("standalone=\"yes\"", "");
    }
}



java实体 

package com.ddwl.api.entity;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "Message")
@XmlType(propOrder = {
        "Header",
        "Body",
})
public class Account {

    private Body Body;

    private Header Header;

    public com.ddwl.api.entity.Body getBody() {
        return Body;
    }

    public void setBody(com.ddwl.api.entity.Body body) {
        Body = body;
    }

    public com.ddwl.api.entity.Header getHeader() {
        return Header;
    }

    public void setHeader(com.ddwl.api.entity.Header header) {
        Header = header;
    }

}



main方法调用

Body body=new Body();
        body.setWaybills(waybills);

        Header header=new Header();
        header.setMessageInformation(messageID);

        Account account =new Account();
        account.setHeader(header);
        account.setBody(body);

        String strXml= XMLUtil.convertToXml(account);



转换效果

java实体转json java实体转xml字符串_java实体转xml

附:

@XmlRootElement:根节点

@XmlAccessorType(XmlAccessType.FIELD): 表示使用这个类中的 private 非静态字段作为 XML 的序列化的属性或者元素。

                                                                              这里还可以选择属性,也就是使用 set/get 方法来序列化属性或者元素。

@XmlType :指定输出顺序