Java中JAXB解析XML的核心是通过注解(如@XmlRootElement、@XmlElement、@XmlAttribute)和API(JAXBContext、Unmarshaller)将XML映射为Java对象;JDK 8及以前自带,JDK 9+需手动引入jakarta.xml.bind依赖。
Java中用JAXB解析XML,核心是把XML结构映射成Java对象,靠的是JAXB注解和JAXBContext、Unmarshaller这些API。不需要第三方库(JDK 8及以前自带),但JDK 9+默认移除了JAXB模块,需手动添加依赖。
这是最常用的两个注解。@XmlRootElement 标记类为XML根元素;@XmlElement 控制字段/属性如何映射为XML子元素。
例如有XML:
对应Java类写法:
@XmlRootElement(name = "person")
public class Person {
@XmlAttribute(name =
"id")
private String id;
@XmlElement(name = "name")
private String name;
@XmlElement(name = "age")
private int age;
// 必须有无参构造方法
public Person() {}
// getter/setter 省略
}
当XML中有包裹标签的列表时(比如
示例:
public class Library {
@XmlElementWrapper(name = "books")
@XmlElement(name = "book")
private List bookList = new ArrayList<>();
// getter/setter
}
@XmlAccessorType 决定JAXB扫描哪些成员(字段/属性)。默认是 FIELD(直接读字段),但更推荐 PROPERTY,即只通过 getter/setter 访问,便于封装。
@XmlAccessorType(XmlAccessType.PROPERTY)
@XmlType(propOrder = {"id", "name", "age"})
public class Person {
private String id;
private String name;
private int age;
@XmlAttribute
public String getId() { return id; }
public void setId(String id) { this.id = id; }
@XmlElement
public String getName() { return name; }
public void setName(String name) { this.name = name; }
@XmlElement
public int getAge() { return age; }
public void setAge(int age) { this.age = age; }
}
反序列化(XML → Java对象):
String xml = ""; JAXBContext context = JAXBContext.newInstance(Person.class); Unmarshaller unmarshaller = context.createUnmarshaller(); Person person = (Person) unmarshaller.unmarshal(new StringReader(xml)); 李四 30
序列化(Java对象 → XML):
Person p = new Person();
p.setId("1002");
p.setName("王五");
p.setAge(25);
JAXBContext context = JAXBContext.newInstance(Person.class);
Marshaller marshaller = context.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); // 美化输出
marshaller.marshal(p, System.out);
jakarta.xml.bind:jakarta.xml.bind-api 和 org.glassfish.jaxb:jaxb-runtime
# java
# app
# access
# win
# java类
相关文章:
常州自助建站工具推荐:低成本搭建与模板选择技巧
如何撰写建站申请书?关键要点有哪些?
制作网站的公司有哪些,做一个公司网站要多少钱?
宠物网站制作html代码,有没有专门介绍宠物如何养的网站啊?
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
如何零基础在云服务器搭建WordPress站点?
网页设计网站制作软件,microsoft office哪个可以创建网页?
如何在宝塔面板创建新站点?
如何正确下载安装西数主机建站助手?
如何快速登录WAP自助建站平台?
制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?
红河网站制作公司,红河事业单位身份证如何上传?
网站制作软件有哪些,制图软件有哪些?
建站之星如何快速更换网站模板?
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
如何在Tomcat中配置并部署网站项目?
如何在Golang中使用replace替换模块_指定本地或远程路径
高端企业智能建站程序:SEO优化与响应式模板定制开发
c++ stringstream用法详解_c++字符串与数字转换利器
建站之星安装后如何自定义网站颜色与字体?
如何通过VPS搭建网站快速盈利?
建站之星后台密码遗忘或太弱?如何重置与强化?
建站之星CMS建站配置指南:模板选择与SEO优化技巧
如何用PHP快速搭建CMS系统?
如何在宝塔面板中修改默认建站目录?
如何通过虚拟主机空间快速建站?
建站之星后台管理如何实现高效配置?
建站之星CMS五站合一模板配置与SEO优化指南
江苏网站制作公司有哪些,江苏书法考级官方网站?
网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?
如何在阿里云部署织梦网站?
如何在景安服务器上快速搭建个人网站?
香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化
北京网站制作公司哪家好一点,北京租房网站有哪些?
免费制作小说封面的网站有哪些,怎么接网站批量的封面单?
如何配置IIS站点权限与局域网访问?
如何选择服务器才能高效搭建专属网站?
如何快速上传自定义模板至建站之星?
建站OpenVZ教程与优化策略:配置指南与性能提升
建站之星免费版是否永久可用?
实现点击下箭头变上箭头来回切换的两种方法【推荐】
电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?
如何选择可靠的免备案建站服务器?
如何快速查询域名建站关键信息?
如何使用Golang table-driven基准测试_多组数据测量函数效率
娃派WAP自助建站:免费模板+移动优化,快速打造专业网站
如何用西部建站助手快速创建专业网站?
大连 网站制作,大连天途有线官网?
*请认真填写需求信息,我们会在24小时内与您取得联系。