Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JAXB注释_Java_Xml_Xml Serialization_Xsd_Jaxb - Fatal编程技术网

Java JAXB注释

Java JAXB注释,java,xml,xml-serialization,xsd,jaxb,Java,Xml,Xml Serialization,Xsd,Jaxb,我需要一些JAXB注释方面的帮助,但我找不到好的文档来帮助我解决这个问题 我有一个类要封送到XML中。我的班级是这样的: @XmlRootElement(name="car") @XmlAccessorType(XmlAccessType.FIELD) @XmlType(propOrder = { "vid", "make", "model", "recalls", "engSpec" }) public class Car { @XmlElem

我需要一些JAXB注释方面的帮助,但我找不到好的文档来帮助我解决这个问题

我有一个类要封送到XML中。我的班级是这样的:

@XmlRootElement(name="car")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(propOrder = {
    "vid",
    "make",
    "model",
    "recalls",
    "engSpec"
})

public class Car {
    @XmlElement(name="vid", required=true)
    private String vid;
    @XmlElement(name="make", required=true)
    private String make;
    @XmlElement(name="model", required=true)
    private String model;
    @XmlElement(name="recalls", required=true)
    private ArrayList<Recall> recalls;
    @XmlElement(name="engSpec", required=true)
    private EngSpec engSpec;
...
@XmlRootElement(name = "recall")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(propOrder = {
        "type",
        "date"
})
public class Recall {
    @XmlElement(name="type", required=true)
    private String type;
    @XmlElement(name="date", required=true)
    private String date;
...
<car>
 <vid>vid</vid>
 <make>make</make>
 <model>model</model>

 <recalls>
   <recall>
     <type>Recall1</type>
     <date>01/01/11</date>
   </recall>
   <recall>
     <type>Recall2</type>
     <date>01/01/11</date>
   </recall>
 </recalls>

 <engSpec>
   <power>200HP</power>
   <size>size</size>
 </engSpec>
</car>
因此,它会生成以下XML输出:

<car>
 <vid>vid</vid>
 <make>make</make>
 <model>model</model>

 <recalls>
   <type>Recall1</type>
   <date>01/01/11</date>
 </recalls>
 <recalls>
   <type>Recall2</type>
   <date>01/01/11</date>
 </recalls>

 <engSpec>
   <power>200HP</power>
   <size>size</size>
 </engSpec>
</car>
有没有办法解决这个问题?谢谢

试试这个:

@XmlRootElement(name="car")
...
public class Car {
   ...

   @XmlElementWrapper(name="recalls")  // this name=... can be omitted, as it
                                       // is the same as the field name
   @XmlElement(name="recall")
   private ArrayList<Recall> recalls;
}
@XmlRootElement(name=“car”)
...
公车{
...
@XmlElementWrapper(name=“recalls”)//此名称=…可以省略,因为它
//与字段名相同
@xmlement(name=“recall”)
私人ArrayList回忆;
}
从:

XmlElementWrapper:围绕XML表示生成包装器元素。这主要用于围绕集合生成包装器XML元素


顺便说一下,如果bean属性名与XML元素相同,则不需要指定
@xmlement
注释。。。为您节省大量打字时间。:)
@XmlRootElement(name="car")
...
public class Car {
   ...

   @XmlElementWrapper(name="recalls")  // this name=... can be omitted, as it
                                       // is the same as the field name
   @XmlElement(name="recall")
   private ArrayList<Recall> recalls;
}