我需要在xsd文件中声明一个列表。不确定我需要做出哪些改变。我尝试使用简单类型,但是没有生成所需的类型。
我需要我的pojo将数据类型设为 -
@XmlElement(name = "Journeys", required = true)
protected List<LoyaltyJourneyIdentifier> journeys = new ArrayList<LoyaltyJourneyIdentifier>();
我当前的xsd
<xs:complexType name="AccountLoyaltyDetail">
<xs:sequence>
<xs:element name="OperatingCompany" type="ns:OperatingCompanyType"
minOccurs="0" />
<xs:element name="Journeys" type="ns:LoyaltyJourneyIdentifier" />
<xs:element name="Segments" type="ns:LoyaltySegmentIdentifier" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="LoyaltyJourneyIdentifier">
<xs:sequence>
<xs:element name="JourneyIdentifierId" type="xs:string" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Free form text to be echoed back in the reply.
Used to match requests and replies.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType
&GT; 目前pojo生成为 -
@XmlElement(name = "Journeys", required = true)
protected LoyaltyJourneyIdentifier journeys;
请告诉我需要做出哪些更改
答案 0 :(得分:1)
要在XSD中表示List,请使用complexType,而不是xs:list。 您的XSD需要更改如下。
<xs:complexType name="AccountLoyaltyDetail">
<xs:sequence>
<xs:element name="OperatingCompany" type="ns:OperatingCompanyType"
minOccurs="0" />
<xs:element name="Journeys" type="LoyaltyJourneyIdentifier" />
<xs:element name="Segments" type="LoyaltySegmentIdentifier" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="LoyaltyJourneyIdentifier">
<xs:sequence>
<xs:element name="JourneyIdentifierId" type="xs:string" minOccurs="1" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Free form text to be echoed back in the reply.
Used to match requests and replies.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
现在让我们看看xs:list
和xs:complexType
之间的区别。
xs:list
元素的目的不是表示Collection类型,它只列出类似的元素类型,如下所示。
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="stringvalues" type="valuelist"/>
<xs:simpleType name="valuelist">
<xs:list itemType="xs:string"/>
</xs:simpleType>
</xs:schema>
文档中的“stringvalues”元素可能如下所示(注意 列表将有四个列表项:)
<stringvalues>I love XML Schema</stringvalues>
现在,要在XSD中表示java.util.List,请使用下面的示例。 List只是一个复杂类型,maxOccurs属性值为unbounded。
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="customer">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="phone-number" type="xsd:string" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
我希望这会有所帮助。
答案 1 :(得分:0)
以下对我有用,您可以从 wsdl 和 xsd 创建
<块引用>以下是你想要的对象列表
<xs:complexType name="objectClass">
<xs:sequence>
<xs:element name="name" type="xs:string" />
<xs:element name="city" type="xs:string" />
nillable="true" />
</xs:sequence>
</xs:complexType>
<块引用>
在其他添加最小出现次数和最大值时引用此对象,如下所示
<xs:sequence>
<xs:element name="item"
type="tns:objectClass" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<块引用>
以上会导致java如下
public class MainClassWhereYouWantListofAboveClass {
protected List<objectClass> item;
//.....
}