3

我有类层次结构

interface Intf {}

Class A implements Intf{}

Class B implements Intf{}

现在我在上面使用Class A并使用Class BJaxB 的 elp 读取两个不同的 XML 文件。有人可以建议我如何在 JaxB 中配置和使用上述结构吗?

4

1 回答 1

2

对于您的用例,接口不考虑在内。如果您想映射AB不同的 XML 结构,您可以继续这样做,我将在下面通过一个示例进行演示。

JAVA模型

整数

public interface IntF {

    public String getFoo();

    public void setFoo(String foo);

}

一种

import javax.xml.bind.annotation.*;

@XmlRootElement
public class A implements IntF {

    private String foo;

    @Override
    @XmlElement(name="renamed-foo")
    public String getFoo() {
        return foo;
    }

    @Override
    public void setFoo(String foo) {
        this.foo = foo;
    }

}

import javax.xml.bind.annotation.*;

@XmlRootElement
public class B implements IntF {

    private String foo;

    @Override
    @XmlAttribute
    public String getFoo() {
        return foo;
    }

    @Override
    public void setFoo(String foo) {
        this.foo = foo;
    }

}

演示代码

演示

import javax.xml.bind.*;

public class Demo {

    public static void main(String[] args) throws Exception {
        JAXBContext jc = JAXBContext.newInstance(A.class, B.class);
        Marshaller marshaller = jc.createMarshaller();
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);

        A a = new A();
        a.setFoo("Hello World");
        marshaller.marshal(a, System.out);

        B b = new B();
        b.setFoo("Hello World");
        marshaller.marshal(b, System.out);
    }

}

输出

<?xml version="1.0" encoding="UTF-8"?>
<a>
    <renamed-foo>Hello World</renamed-foo>
</a>
<?xml version="1.0" encoding="UTF-8"?>
<b foo="Hello World"/>
于 2013-03-30T10:22:17.920 回答