编组时单个元素组的JAXB元素包装器

时间:2015-02-12 19:07:14

标签: java xml jaxb

我希望有这样的XML结构:

<?xml version="1.0" encoding="UTF-8"?>
<MSG>
   <CASE>
       <Field1></Field1>
       <Field2></Field2>
   </CASE>
</MSG>

问题是,对于@XmlElementWrapper,我需要一组项目,但只有一个案例项目。对于单个元素集合,我如何拥有多个根元素?最好是在一个班级中。

我想要这样的东西,但它会引发异常。

@XmlRootElement( name="MSG")
public class XMLStructure {

   @XmlElementWrapper(name="CASE")
   @XmlElement(name = "Field1")
   private String field1;

   @XmlElementWrapper(name="CASE")
   @XmlElement(name = "Field2")
   private String field2;
}

1 个答案:

答案 0 :(得分:1)

EclipseLink MOXyJAXB (JSR-222)实施中,我们提供了@XmlPath扩展程序,您可以将其映射为:

@XmlRootElement( name="MSG")
@XmlAccessorType(XmlAccessType.FIELD)
public class XMLStructure {

   @XmlPath("CASE/Field1/text()")
   private String field1;

   @XmlPath("CASE/Field2/text()")
   private String field2;
}

了解更多信息

我在博客上写了更多关于@XmlPath扩展程序的内容: