您可以使用 JAXB API 进行复制。这涉及将源数据包装在JAXBSource
then 的实例中,因为Unmarshaller
可以从Source
简单的解组中解组JAXBSource
以将数据复制到第二个模型。
演示代码
演示
import javax.xml.bind.*;
import javax.xml.bind.util.JAXBSource;
public class Demo {
public static void main(String[] args) throws Exception {
// Create Input from Foo Model
forum17791487.foo.Root fooRoot = new forum17791487.foo.Root();
fooRoot.setValue("Hello World");
JAXBContext fooContext = JAXBContext.newInstance(forum17791487.foo.Root.class);
JAXBSource jaxbSource = new JAXBSource(fooContext, fooRoot);
// Unmarshal Foo Input to Bar Model
JAXBContext barContext = JAXBContext.newInstance(forum17791487.bar.Root.class);
Unmarshaller unmarshaller = barContext.createUnmarshaller();
forum17791487.bar.Root barRoot = (forum17791487.bar.Root) unmarshaller.unmarshal(jaxbSource);
System.out.println(barRoot.getValue());
}
}
输出
Hello World
JAVA模型
以下类仅因包名称而异。虽然在此示例中每个包仅使用一个类,但相同的原则适用于较大的模型。
论坛17791487.foo.Root
package forum17791487.foo;
import javax.xml.bind.annotation.*;
@XmlRootElement
public class Root {
private String value;
public String getValue() {
return value;
}
public void setValue(String foo) {
this.value = foo;
}
}
论坛17791487.bar.Root
package forum17791487.bar;
import javax.xml.bind.annotation.*;
@XmlRootElement
public class Root {
private String value;
public String getValue() {
return value;
}
public void setValue(String foo) {
this.value = foo;
}
}
了解更多信息