gpt4 book ai didi

java - 将 XML 映射到 Java 中的对象

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:12:02 26 4
gpt4 key购买 nike

假设我有一个名为 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 对象中?

现在我是这样做的:我解析 XML 字符串并逐个获取每个节点的数据,然后调用 setter 方法为 Test 类对象的每个字段设置数据。 p>

最佳答案

简答:是的,有这样的解决方案。

它叫做 "XML data binding" ,或者“O/X Mapping”(对象/XML 映射),或者“OXM”。将 XML 文档转换为对象称为解码
将对象转换(序列化)为 XML 文档称为编码

注意:
术语编码解码 不仅与对象/XML 相关,反之亦然。在这里阅读:Marshalling (Computer Science) .

Java 自己的解决方案叫做Java Architecture for XML Binding (JAXB) .这是JSR 222描述的规范. JDK 包含一个 JAXB implementation ,因此您(通常)不需要从 JAXB Project home page 下载独立的引用实现 (RI) .

注意:
您可以使用 xjc (binding compiler) 检查 JDK 的 JAXB 版本。 , 与 JDK 捆绑在一起:xjc -version


有用的链接

只需在谷歌上搜索“JAXB 教程”,就有很多。


重要提示:

JAXB 是一种规范,它有不同的实现(包括引用实现)。但是这些传统实现不能使用XPath ,这很可悲,因为对于大量嵌套的 XML 文件,使用 XPath 会更有效。

EclipseLink MOXy提供具有许多扩展的 JAXB 实现。其中之一是 XPath based mapping .在执行我的一个项目时,我发现它非常有用,其中涉及 OXM。

以下是一些相关链接:

关于java - 将 XML 映射到 Java 中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16753945/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com