JAXB是Java原生XML绑定框架,通过注解(如@XmlRootElement、@XmlElement等)标记Java类,利用JAXBContext实现对象与XML的序列化和反序列化,需无参构造器且注意JDK 11+需添加依赖。
JAXB(Java Architecture for XML Binding)是Java原生支持的XML绑定框架,能直接将Java对象与XML相互转换,无需手动解析或拼接。核心在于用注解标记类结构,再通过JAXBContext驱动序列化/反序列化。
让JAXB知道如何映射字段到XML元素或属性:
name、required等))示例:
public class User {使用JAXBContext创建Marshaller,调用marshal()输出XML:
JAXBContext.newInstance(User.class)初始化上下文context.createMarshaller()获取marshallersetProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true))让XML换行缩进File、OutputStream、Writer或DOMResult
简单示例:
JAXBContext ctx = JAXBContext.newInstance(User.class);用Unmarshaller将XML源(字符串、文件、InputStream等)还原为对象:
JAXBContext获取Unmarshaller
StringReader(处理XML字符串)、File、InputStream等输入源@XmlRootElement声明的类匹配,否则抛异常例如从字符串解析:
String xml = "实际使用中容易踩坑的地方:
final或static(除非加@XmlTransient)@XmlElement包裹,并确保泛型信息可用(建议用List而非ArrayList)setProperty(Marshaller.JAXB_ENCODING, "UTF-8")
jakarta.xml.bind:jakarta.xml.bind-api + org.glassfish.jaxb:jaxb-runtime
基本上就这些。用对注解、配好上下文、注意JDK版本兼容性,JAXB的XML互转就很稳。