JAXB-在xsd:all内部具有不受限制的maxOccur的元素

JAXB-在xsd:all内部具有不受限制的maxOccur的元素,第1张

JAXB-在xsd:all内部具有不受限制的maxOccur的元素

假设您仍然可以修改此模型,则可以将角色列表包装为自己的类型,因此最终得到一个

<roles>
带有
<role>
s 列表的元素

<SearchParams>    <firstname>firstname</firstname>    <lastname>lastname</lastname>    <roles>        <role>role</role>    </roles></SearchParams>

XSD将是

<xsd:schema ... >    <xsd:element name="SearchParams">        <xsd:complexType> <xsd:all>     <xsd:element name="firstname" type="xsd:string" />     <xsd:element name="lastname" type="xsd:string" />     <xsd:element name="roles" type="Roles" /> </xsd:all>        </xsd:complexType>    </xsd:element>    <xsd:complexType name="Roles">        <xsd:sequence> <xsd:element name="role" type="xsd:string" maxOccurs="unbounded" />        </xsd:sequence>    </xsd:complexType></xsd:schema>

而且您将有两个班级。

Roles
包含列表的类。海事组织,这是一种更清洁的方法。(您可以
Roles
将其设为匿名,但随后您将陷入静态的内部类中)

@XmlAccessorType(XmlAccessType.FIELD)@XmlType(name = "", propOrder = {})@XmlRootElement(name = "SearchParams")public class SearchParams {    @XmlElement(required = true)    protected String firstname;    @XmlElement(required = true)    protected String lastname;    @XmlElement(required = true)    protected Roles roles;    ...}@XmlAccessorType(XmlAccessType.FIELD)@XmlType(name = "Roles", propOrder = {    "role"})public class Roles {    @XmlElement(required = true)    protected List<String> role;    ...}

更新

“如果我可以通过这种方式更改模型类,那么这将是解决此问题的好方法。不幸的是,我只允许更改注释”

您可以使用

@XmlList

@XmlAccessorType(XmlAccessType.FIELD)@XmlType(name = "", propOrder = {})@XmlRootElement(name = "SearchParams")public class SearchParams {    @XmlElement(required = true)    protected String firstname;    @XmlElement(required = true)    protected String lastname;    @XmlList    @XmlElement(required = true)    protected List<String> role;    ...}

xsd看起来像

<xsd:element name="SearchParams">    <xsd:complexType>        <xsd:all> <xsd:element name="firstname" type="xsd:string" /> <xsd:element name="lastname" type="xsd:string" /> <xsd:element name="role">     <xsd:simpleType>         <xsd:list itemType="xsd:string" />     </xsd:simpleType> </xsd:element>        </xsd:all>    </xsd:complexType></xsd:element>

注: 如前所述 这里
,这种方法是一种“危险的”,我在文章的开头的解决方案优于使用

list
字符串类型的。但在您的特定情况下,不确定我是否看到另一种方式



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5562140.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存