Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.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使用点定义XML元素_Java_Xml_Annotations_Jaxb - Fatal编程技术网

Java JAXB使用点定义XML元素

Java JAXB使用点定义XML元素,java,xml,annotations,jaxb,Java,Xml,Annotations,Jaxb,我需要创建一个与此结构匹配的XML: <OfferPackage Name="aaa"> <OfferPackage.Offers> <OfferCollection Capacity="1"> <Offer Price="12.34"/> <Offer Price="12.34"/>

我需要创建一个与此结构匹配的XML:

<OfferPackage Name="aaa">
    <OfferPackage.Offers>
        <OfferCollection Capacity="1">
            <Offer Price="12.34"/>
            <Offer Price="12.34"/>
        </OfferCollection>
    </OfferPackage.Offers>
</OfferPackage>

我的问题是,我不知道如何在这里实现这一点:
。我怎样才能用注释得到这个“点符号”?我得到的一切都是这样的:

<OfferPackage Name="aaa">
  <OfferCollection Capacity="1">
    <Offer Price="12.34"/>
    <Offer Price="12.34"/>
  </OfferCollection>
</OfferPackage>

这是我当前的代码:

@XmlRootElement(name=“OfferPackage”)
@XmlAccessorType(XmlAccessType.FIELD)
公共类提供包{
@XmlAttribute(name=“name”)
私有字符串名称=null;
@XmlElement(name=“OfferCollection”)
私有列表提供=null;
@鬼鬼祟祟
公共字符串toString(){
var sw=新的StringWriter();
var marshaller=JAXBContext
.newInstance(OfferPackage.class)
.createMarshaller();
setProperty(JAXB_片段,true);
元帅,元帅(本,西南);
返回sw.toString();
}
}
@XmlRootElement(name=“Offer”)
@XmlAccessorType(XmlAccessType.FIELD)
公开课收费{
@xmldattribute(name=“容量”)
专用整数容量=null;
@xmlement(name=“Offer”)
私有列表报价=null;
}

您可以使用以下方法实现所需的行为:

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

在您的情况下,它将类似于以下内容:

@XmlRootElement(name=“OfferPackage”)
@XmlAccessorType(XmlAccessType.FIELD)
公共类提供包{
@XmlAttribute(name=“name”)
私有字符串名称=null;
@XmlElementWrapper(name=“OfferPackage.Offers”)
@XmlElement(name=“OfferCollection”)
私有列表提供=null;
@鬼鬼祟祟
公共字符串toString(){
var sw=新的StringWriter();
var marshaller=JAXBContext
.newInstance(OfferPackage.class)
.createMarshaller();
setProperty(JAXB_片段,true);
元帅,元帅(本,西南);
返回sw.toString();
}
}
另一种可能是定义一个中间类,
OfferPackageOffers
来包装
OfferCollection
列表
::

@XmlRootElement(name=“OfferPackage.Offers”)
@XmlAccessorType(XmlAccessType.FIELD)
公共类OfferPackageOffers{
@XmlElement(name=“OfferCollection”)
私有列表提供=null;
//...
}
并使用
OfferPackage
中的新类代替前面提到的
OfferCollection
列表

@XmlRootElement(name=“OfferPackage”)
@XmlAccessorType(XmlAccessType.FIELD)
公共类提供包{
@XmlAttribute(name=“name”)
私有字符串名称=null;
@XmlElement(name=“OfferPackage.Offers”)
private OfferPackageOffers offers=null;
//...
}