加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

将XML映射到Java中的对象

发布时间:2020-12-16 07:50:17 所属栏目:百科 来源:网络整理
导读:假设我有一个名为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; th
假设我有一个名为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类对象的每个字段设置数据.

简短回答:是的,有这样的解决方案.

它被称为“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).

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

有用的链接

> Java Architecture for XML
Binding –
官方Oracle Java学习资源
> A JAXB Tutorial – 官方教程
从JAXB project(参考
实施)
> JAXB hello world
example – 非常
简单易学的教程
> JAXB tutorial – Getting
Started – 另一个带示例的简短教程

只是谷歌“JAXB教程”,有很多.

重要的提示:

JAXB是一个规范,它有不同的实现(包括参考实现).但是这些传统的实现不能使用XPath,这很难过,因为使用XPath的重度嵌套的XML文件可以更加有效.

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

以下是一些相关链接:

> XPath Based
Mapping –
团队负责人Blaise Doughan非常有帮助的文章
对于EclipseLink JAXB(MOXy)项目.另请查看其他文章
他的博客.
> Make your JAXB cleaner with the MOXy implementation – 另一篇有用的文章,其中有一个很好的例子,概述了EclipseLink MOXy的优势.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读