您可以更改模型并执行以下 *** 作:
根
@XmlRootElement@XmlAccessorType(XmlAccessType.FIELD)public class Root { @XmlElement(name="parent") List<Parent> allParents;}
父母
@XmlAccessorType(XmlAccessType.FIELD)public class Parent { @XmlElement(name="child") List<Child> allChildren;}
更新
有可能避免上课吗?
有两种不同的方法可以完成此 *** 作:
选项#1-使用XmlAdapter的任何JAXB实现
您可以使用XmlAdapter虚拟添加
Parent类。
子适配器
import javax.xml.bind.annotation.adapters.XmlAdapter;public class ChildAdapter extends XmlAdapter<ChildAdapter.Parent, Child> { public static class Parent { public Child child; } @Override public Parent marshal(Child v) throws Exception { Parent parent = new Parent(); parent.child = v; return parent; } @Override public Child unmarshal(Parent v) throws Exception { return v.child; }}
根
该
@XmlJavaTypeAdapter注释被用于引用
XmlAdapter。
import java.util.List;import javax.xml.bind.annotation.*;import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;@XmlRootElement@XmlAccessorType(XmlAccessType.FIELD)public class Root { @XmlElement(name="parent") @XmlJavaTypeAdapter(ChildAdapter.class) List<Child> allChildren;}
儿童
import javax.xml.bind.annotation.*;@XmlAccessorType(XmlAccessType.FIELD)public class Child { @XmlAttribute int id; @XmlAttribute String name;}
选项#2-使用Eclipselink JAXB(MOXy)
如果您将 Eclipselink JAXB(MOXy)
用作 JAXB(JSR-222)
实现,则可以执行以下 *** 作(注意:我是MOXy主管):
根
import java.util.List;import javax.xml.bind.annotation.*;@XmlRootElement@XmlAccessorType(XmlAccessType.FIELD)public class Root { @XmlElement(name="parent") List<Child> allChildren;}
儿童
MOXy的
@XmlPath注释的工作方式几乎与您尝试
@XmlElement在帖子中使用注释的方式一样。
import javax.xml.bind.annotation.*;import org.eclipse.persistence.oxm.annotations.XmlPath;@XmlAccessorType(XmlAccessType.FIELD)public class Child { @XmlPath("child/@id") int id; @XmlPath("child/@name") String name;}
想要查询更多的信息
- http://blog.bdoughan.com/2010/07/xpath-based-mapping.html
- http://blog.bdoughan.com/2011/05/specifying-eclipselink-moxy-as-your.html
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)