2014-02-17 48 views
1

在我的XSD,我有這樣的事情:爲XS生成父標籤:序列元素

<xs:complexType name="Disk"> 
     <xs:attribute name="index" type="xs:int"></xs:attribute> 
     <xs:attribute name="providerId" type="xs:int"></xs:attribute> 
     <xs:attribute name="size" type="xs:int"></xs:attribute> 
    </xs:complexType> 

    <xs:complexType name="Server"> 
     <xs:sequence> 
     <xs:element name="Disk" maxOccurs="unbounded" type="Disk"></xs:element> 
      </xs:sequence> 
    </xs:complexType> 

我生成JAXB類從上面XSD和創建服務器的對象,並填充指定的磁盤數組列表。現在,當我嘗試元帥Server對象到XML,我看到:

<server><Disk index="0" providerId="123" size="10000"/><Disk index="1" providerId="1234" size="10000"/></server> 

有沒有什麼辦法讓我看到XML這樣的:

<server><Disks><Disk index="0" providerId="123" size="10000"/><Disk index="1" providerId="1234" size="10000"/></Disks></server> 

我想要的磁盤XML標記列表是附在標籤中。如果可能的話,該怎麼做?

+0

聲明磁盤的另一要素,並保持在側 – Naren

回答

2

如果你想標籤可以在服務器標籤中多次出現使用這個。

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:complexType name="Disk"> 
     <xs:attribute name="index" type="xs:int"></xs:attribute> 
     <xs:attribute name="providerId" type="xs:int"></xs:attribute> 
     <xs:attribute name="size" type="xs:int"></xs:attribute> 
    </xs:complexType> 

    <xs:complexType name="Server"> 
     <xs:sequence> 
     <xs:element name="Disks" maxOccurs="unbounded" type="Disks"></xs:element> 
      </xs:sequence> 
    </xs:complexType> 

    <xs:complexType name="Disks"> 
    <xs:sequence> 

     <xs:element name="Disk" maxOccurs="unbounded" type="Disk"></xs:element> 
    </xs:sequence> 
    </xs:complexType> 
</xs:schema> 

或者,如果你想要的磁盤標籤只有一次使用以下XSD

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:complexType name="Disk"> 
     <xs:attribute name="index" type="xs:int"></xs:attribute> 
     <xs:attribute name="providerId" type="xs:int"></xs:attribute> 
     <xs:attribute name="size" type="xs:int"></xs:attribute> 
    </xs:complexType> 

    <xs:complexType name="Server"> 
     <xs:sequence> 
     <xs:element name="Disks" minOccurs="0" maxOccurs="1" type="Disks"></xs:element> 
      </xs:sequence> 
    </xs:complexType> 

    <xs:complexType name="Disks"> 
    <xs:sequence> 

     <xs:element name="Disk" maxOccurs="unbounded" type="Disk"></xs:element> 
    </xs:sequence> 
    </xs:complexType> 
</xs:schema> 
+0

你搖滾磁盤標籤。先工作。 – Sandeep

+0

謝謝,我知道它會工作,我發佈之前測試它.. :) – Naren