思路一:节点比较少的时候可以直接使用字符串拼接的方式
思路二:把文本转对象,再把对象转xml
1.把文本转对象
2.改造对象
属性的使用 @XmlAttribute
节点的使用@XmlElement
增加get,set ,有参无参构造方法
@XmlAccessorType
类级别的注解。定义这个类中的何种类型需要映射到XML。解释起来有点拗口,可以通过它的属性值更好理解这个参数的意义。
参数 value
参数 value 可以接受4个指定值,这几个值是枚举类型,方便调用:
- XmlAccessType.FIELD:映射这个类中的所有字段到XML
- XmlAccessType.PROPERTY:映射这个类中的属性(get/set方法)到XML
- XmlAccessType.PUBLIC_MEMBER:将这个类中的所有public的field或property同时映射到XML(默认)
- XmlAccessType.NONE:不映射
3.解析对象
import lombok.extern.slf4j.Slf4j;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import java.io.ByteArrayOutputStream;
public static String AvaFailXml(EnvelopeDTO envelopeDTO) {
try {
// 获取上下文对象
JAXBContext context = JAXBContext.newInstance(EnvelopeDTO.class);
// 根据上下文获取marshaller对象
Marshaller marshaller = context.createMarshaller();
// 设置编码字符集
marshaller.setProperty(Marshaller.JAXB_ENCODING, "GBK");
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
marshaller.marshal(envelopeDTO, byteArrayOutputStream);
// 生成XML字符串
return new String(byteArrayOutputStream.toByteArray());
} catch (Exception e) {
log.error("XML:解析异常-----" + e.getMessage(), e);
}
return "";
}