我有 2 个类:A 和 Test,它们在不同的 .java 文件中定义。将 Test 类作为 A 类型的字段。现在我需要能够编组/解组这两个类,因此我需要将 XMLRootElement 放入这两个类。可能吗?或者我需要一些包装吗?Coudl 在谷歌中找不到任何东西。
问候,杰夫
我有 2 个类:A 和 Test,它们在不同的 .java 文件中定义。将 Test 类作为 A 类型的字段。现在我需要能够编组/解组这两个类,因此我需要将 XMLRootElement 放入这两个类。可能吗?或者我需要一些包装吗?Coudl 在谷歌中找不到任何东西。
问候,杰夫
这当然是可能的,您不需要任何类型的包装器。这是一个例子:
ItemA.java
package answer;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name = "ItemA")
@XmlAccessorType(value = XmlAccessType.FIELD)
public class ItemA {
private ItemB One = new ItemB();
private ItemB Two = new ItemB();
}
ItemB.java
package answer;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name = "ItemB")
@XmlAccessorType(value = XmlAccessType.FIELD)
public class ItemB {
private int One = 1;
private int Two = 2;
}
证明这行得通
package answer;
import javax.xml.bind.JAXB;
import java.io.StringWriter;
public class Test {
public static void main(String[] args) {
ItemA itemA = new ItemA();
ItemB itemB = new ItemB();
StringWriter sw1 = new StringWriter();
JAXB.marshal(itemA, sw1);
System.out.println(sw1.toString());
StringWriter sw2 = new StringWriter();
JAXB.marshal(itemB, sw2);
System.out.println(sw2.toString());
}
}