package forum8807296; import javax.xml.bind.annotation.adapters.XmlAdapter; public class BarAdapter extends XmlAdapter
富
XmlAdapter使用@XmlJavaTypeAdapter注释与bars属性相关联:
package forum8807296; import java.util.List; import javax.xml.bind.annotation.*; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; @XmlRootElement public class Foo { private List bars; @XmlElement(name="bar") @XmlJavaTypeAdapter(BarAdapter.class) public List getBars() { return bars; } public void setBars(List bars) { this.bars = bars; } }
酒吧
package forum8807296; public class Bar { private T value; public T getValue() { return value; } public void setValue(T value) { this.value = value; } }
演示
您可以使用以下演示代码测试此示例:
package forum8807296; import java.util.ArrayList; import java.util.List; import javax.xml.bind.JAXBContext; import javax.xml.bind.Marshaller; public class Demo { public static void main(String[] args) throws Exception { JAXBContext jc = JAXBContext.newInstance(Foo.class); Foo foo = new Foo(); List bars = new ArrayList(); foo.setBars(bars); Bar stringBar = new Bar(); stringBar.setValue("string data"); bars.add(stringBar); Bar binaryBar = new Bar(); binaryBar.setValue("binary data".getBytes()); bars.add(binaryBar); Marshaller marshaller = jc.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); marshaller.marshal(foo, System.out); } }
@XmlRootElement(name = "foo", namespace = "http://test.com") @XmlType(name = "Foo", namespace = "http://test.com") public class Foo { @XmlElement(name = "bar") public List bars = new ArrayList<>(); public Foo() {} }