您可以使用JAXB API進行復制。這涉及將源數據包裝在JAXBSource
的實例中,然後Unmarshaller
可以從Source
解組簡單地解組JAXBSource
以將數據複製到第二模型。
DEMO CODE
演示
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模型
以下類僅在軟件包名稱上有所不同。雖然在這個例子中每個包只使用了一個類,但同樣的原則適用於較大的模型。
forum17791487.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;
}
}
forum17791487.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;
}
}
瞭解更多信息
我該怎麼做?你有任何代碼示例? – user2508615
@ user2508615 - 有大量的例子可以在線進行java反射。 – jtahlborn