簡體   English   中英

兩種不同的模式和JAXB Marshaller

[英]Two different schemas and JAXB Marshaller

讓我們假設我們對XML和Schema以及Java類有一些共同的看法:

    <objectFromSchema1>
     <element1/>
     <commonElement1/>
     <commonElement2/>
     <element2/>
    </objectFromSchema1>

   public class X {
     private String element1;
     private String commonElement1;
     private String commonElement2;
     private String element2;
   }

將此類XML解組到Java對象的一種好方法嗎? 這意味着:轉換所有共識字段,並在休息時將其設置為null。

答案是“是”。 這就是JAXB的工作方式。 看一下基本的JAXB教程,例如https://jaxb.java.net/tutorial/

http://docs.oracle.com/javase/tutorial/jaxb/intro/

http://www.vogella.com/tutorials/JAXB/article.html

“是”

如果您有xsd,還可以通過<artifactId>maven-jaxb2-plugin</artifactId> maven插件自動生成這些類。

您班上的一個例子

import java.io.Serializable;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "objectFromSchema1", propOrder = {

})
@XmlRootElement(name = "objectFromSchema1")
public class ObjectFromSchema1
implements Serializable
{

    private final static long serialVersionUID = 12343L;
    protected String element1;
    protected String element2;
    protected String commonElement1;
    protected String commonElement2;
    public String getElement1() {
        return element1;
    }
    public void setElement1(String element1) {
        this.element1 = element1;
    }
    public String getElement2() {
        return element2;
    }
    public void setElement2(String element2) {
        this.element2 = element2;
    }
    public String getCommonElement1() {
        return commonElement1;
    }
    public void setCommonElement1(String commonElement1) {
        this.commonElement1 = commonElement1;
    }
    public String getCommonElement2() {
        return commonElement2;
    }
    public void setCommonElement2(String commonElement2) {
        this.commonElement2 = commonElement2;
    }

}

主要使用方法

public static void main(String[] args) throws JAXBException {
        final JAXBContext context = JAXBContext.newInstance(ObjectFromSchema1.class);
        final Marshaller m = context.createMarshaller();
        m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);

        final ObjectFromSchema1 objectFromSchema1 = new ObjectFromSchema1();

        objectFromSchema1.setCommonElement1("commonElement1");
        objectFromSchema1.setCommonElement2("commonElement2");
        objectFromSchema1.setElement1("element1");
        objectFromSchema1.setElement2("element2");

        m.marshal(objectFromSchema1, System.out);
    }

產量

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<objectFromSchema1>
    <element1>element1</element1>
    <element2>element2</element2>
    <commonElement1>commonElement1</commonElement1>
    <commonElement2>commonElement2</commonElement2>
</objectFromSchema1>

暫無
暫無

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

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