簡體   English   中英

將XML映射到Java中的對象

[英]Mapping XML to an object in Java

假設我有一個叫做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數據綁定 ,或者稱為 O / X映射 ”(對象/ XML映射),或“ OXM ”。 將XML文檔轉換為對象稱為解組
將對象轉換(序列化)為XML文檔稱為封送處理

注意:
編組 和解組術語不僅與對象/ XML有關,反之亦然。 在這里閱讀: 編組(計算機科學)

Java自己的解決方案稱為XML綁定Java體系結構(JAXB) 它是JSR 222描述的規范。 JDK包含一個JAXB實現 ,因此(通常)您不需要從JAXB Project主頁下載獨立的Reference Implementation(RI)

注意:
您可以通過使用與JDK捆綁在一起的xjc(綁定編譯器)來檢查JDK具有哪個版本的JAXB: xjc -version


有用的鏈接

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


重要的提示:

JAXB是一個規范,它有不同的實現(包括參考實現 )。 但是這些傳統的實現不能使用XPath ,這很令人遺憾,因為對於X嵌套的XML文件而言,使用XPath可能更加有效。

EclipseLink MOXy提供了具有許多擴展的JAXB實現。 其中之一是基於XPath的映射 在執行我的其中一個涉及OXM的項目時,我發現它非常有用。

以下是一些相關鏈接:

使用JAXB ,這是XML綁定的標准Java方式-即將對象轉換為XML並返回。 您只需在類上應用幾個注釋,基本上這就是您需要做的所有事情,因此可以避免創建自己的自定義XML解析器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM