Java JAXB使用点定义XML元素
我需要创建一个与此结构匹配的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"/>
<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;
//...
}