假设您仍然可以修改此模型,则可以将角色列表包装为自己的类型,因此最终得到一个
<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字符串类型的。但在您的特定情况下,不确定我是否看到另一种方式
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)