
5.2 对XML进行编组和解组
问题
如何把XML文档编组到Java对象,把Java对象解组到XML文档?
解决方案
使用JAX-B规范。
当创建REST API时,你可能希望使用XML作为数据格式进行信息传递。到目前为止,你已经看到了如何使用JSON格式来实现,但在本节中,你将学习如何开始使用XML作为请求主体和响应的数据格式。
首先在pom.xml中添加JAX-B扩展。打开一个终端窗口,在项目的根目录运行以下命令:
这可以快速将io.quarkus:quarkus-resteasy-jaxb添加到构建工具中。
在Gradle中,可以使用./gradlew addExtension --extensions = "quarkus-resteasy-jaxb "来添加扩展。
下一步是创建一个名为Computer的类,该类将在端点中被编组和解组。创建一个名为org.acme.quickstart.Computer.java的新类:
❶XmlRootElement将其设置为XML文档
最后,你可以创建一个REST API来实现Computer类的操作。创建一个名为org.acme.quickstart.ComputerResource.java的新类:
打开一个新的终端窗口,启动Quarkus应用程序,尝试发送POST和GET方法的请求:
讨论
除了@XmlRootElement,JAX-B规范中还有其他重要的注解:
@XmlRootElement
设置XML文档的根目录,也可以用它来设置元素的名称或命名空间。
@XmlType
定义字段写入的顺序。
@XmlElement
定义实际的XML元素名称,以及其他属性,如namespace、nillable或required。
@XmlAttribute
定义字段要被映射为属性而不是元素。
@XmlTransient
表示不包含在XML中的字段。
另见
你可以在以下网页中了解关于JAX-B的更多信息:
·Oracle:Lesson:Introduction to JAXB(The Java Tutorials)(https://oreil.ly/r9FKb)