簡體   English   中英

如何在 XML 中指定 complexType 列表?

[英]How to specify a list of complexType in XML?

我有 XML 指定以下內容:

    <xs:element name="getNewsResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="newsItem" type="tns:newsList"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:simpleType name="newsList">
        <xs:list itemType="tns:news"/>
    </xs:simpleType>

   <xs:complexType name="news">
        <xs:sequence>
            <xs:element name="id" type="xs:string"/>
            <xs:element name="date" type="xs:string"/>
            <xs:element name="author" type="tns:author"/>
            <xs:element name="title" type="xs:string"/>
            <xs:element name="shortDescription" type="xs:string"/>
            <xs:element name="content" type="xs:string"/>
        </xs:sequence>
    </xs:complexType>

我想在我的回復中列出新聞列表。 但是,當我想用​​ jaxb2 創建 Java 對象時,當我運行 mvn clean compile -X 時,xml 返回以下錯誤:

org.xml.sax.SAXParseException: cos-st-restricts.1.1: The type 'newsList' is atomic, so its {base type definition}, 'tns:news', must be an atomic simple type definition or a built-in primitive datatype.

我應該如何更改我的 XML 以便能夠編譯?

除了使用內置列表類型之外,您還可以通過從現有原子類型派生來創建新的列表類型。 您不能從現有列表類型或復雜類型創建列表類型。

https://www.w3.org/TR/xmlschema-0/#ListDt

這是來自我的一個工作 XSD,一個擁有多個地址的用戶:

<xs:complexType name="user">
    <xs:sequence>
        <xs:element name="addresses" type="tns:addressData" nillable="true" minOccurs="0" maxOccurs="unbounded"/>

請注意, addressData是一個 complexType。

我想這就是你需要的:

<xs:element name="getNewsResponse">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="newsItems" type="tns:news" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

<xs:complexType name="news">
    <xs:sequence>
        <xs:element name="id" type="xs:string"/>
        <xs:element name="date" type="xs:string"/>
        <xs:element name="author" type="tns:author"/>
        <xs:element name="title" type="xs:string"/>
        <xs:element name="shortDescription" type="xs:string"/>
        <xs:element name="content" type="xs:string"/>
    </xs:sequence>
</xs:complexType>
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"     
           targetNamespace="http://pro.com/balcao/xdto"
            xmlns:tns="http://pro.com/balcao/xdto"
           elementFormDefault="qualified">
    

    <xs:element name="salvarCliente" >
        <xs:complexType>
        <xs:sequence>
            <xs:element name="nome" type="xs:string" />
            <xs:element name="telefone" type="xs:string" />
            <xs:element name="provincia" type="xs:string" />
            <xs:element name="municipio" type="xs:string" />
        </xs:sequence>
        </xs:complexType> 
    </xs:element>



        <xs:complexType name="listarClientes">
            <xs:sequence minOccurs="0" maxOccurs="unbounded">
                <xs:element name="clientes" type="tns:cliente" />
            </xs:sequence>
        </xs:complexType>
 
 
    <xs:complexType name="cliente">
            <xs:sequence>
                <xs:element name="nome" type="xs:string" />
                <xs:element name="telefone" type="xs:string" />
                <xs:element name="provincia" type="xs:string" />
                <xs:element name="municipio" type="xs:string" />
            </xs:sequence>
    </xs:complexType> 
</xs:schema>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM