gpt4 book ai didi

java - 在 XSD 中表示对象列表

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:53:48 25 4
gpt4 key购买 nike

我需要在我的 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

>当前 pojo 生成为 -

@XmlElement(name = "Journeys", required = true)
protected LoyaltyJourneyIdentifier journeys;

请让我知道我需要做哪些改变

最佳答案

要在 XSD 中表示列表,请使用 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:listxs: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 属性值是无界的。

<?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>

希望对您有所帮助。

关于java - 在 XSD 中表示对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37294913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com