假设我有一个名为Test, 像这样
public class Test {
private String testId;
private String description;
private String department;
public Test() {}
public Test(String id,String des,String dpt) {
this.testId = id;
this.department = dpt;
this.description = des;
}
public String getTestId() {
return testId;
}
public void setTestId(String testId) {
this.testId = testId;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
}
还有一个 XML 字符串,其中包含该类的对象的数据Test。 XML 字符串是
<test>
<testId>1</testId>
<description>This is first test</description>
<department>surgeon</department>
</test>
现在我的任务是解析该 XML 字符串并创建该类的对象Test并将此 XML 中包含的所有数据放入该对象中。我在用JDOM用于 XML 解析。我想知道是否有任何解决方案可以将所有XML格式的数据直接复制到Test object?
现在我这样做:我解析XML字符串并一一获取每个节点的数据,然后调用setter方法为每个字段设置数据Test类对象。
简短回答:是的,有这样的解决方案。
它被称为"XML 数据绑定",或者“O/X 映射“(对象/XML 映射),或”OXM”。
将 XML 文档转换为对象称为解组.
将对象转换(序列化)为 XML 文档称为编组.
NOTE:
条款编组 and 解组不仅与对象/XML 相关,反之亦然。阅读此处:编组(计算机科学).
Java自己的解决方案叫做XML 绑定的 Java 体系结构 (JAXB)。它是由以下描述的规范JSR 222。 JDK 包括一个JAXB 实施,所以你(通常)不需要下载独立的参考实现 (RI)来自JAXB 项目主页.
NOTE:
您可以使用以下命令检查您的 JDK 有哪个版本的 JAXBxjc(绑定编译器),与 JDK 捆绑在一起:xjc -version
有用的链接
-
XML 的 Java 架构
捆绑-
官方 Oracle Java 学习路线
-
JAXB 教程- 官方教程
来自JAXB项目 (参考
执行)
-
JAXB你好世界
例子- 非常
简单易行的教程
-
JAXB 教程 – 获取
开始- 另一个带有示例的简短教程
只需谷歌“JAXB 教程”,就有很多。
重要的提示:
JAXB 是一个规范,它有不同的实现(包括参考实现)。但这些传统的实现方式无法使用XPath,这很遗憾,因为对于深度嵌套的 XML 文件,使用 XPath 可能更有效。
EclipseLink MOXy提供具有许多扩展的 JAXB 实现。其中之一是基于 XPath 的映射。当我做一个涉及 OXM 的项目时,我发现它非常有用。
以下是一些相关链接:
-
基于XPath
测绘-
非常有帮助的文章来自布莱斯·道安, 团队负责人
用于 EclipseLink JAXB (MOXy) 项目。还可以查看其他文章
他的博客。
-
使用 MOXy 实现让您的 JAXB 更干净- 另一篇有用的文章,其中包含一个很好的示例,概述了 EclipseLink MOXy 的优势。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)