Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为xs:sequence元素生成父标记_Java_Xml_Jaxb_Xsd - Fatal编程技术网

Java 为xs:sequence元素生成父标记

Java 为xs:sequence元素生成父标记,java,xml,jaxb,xsd,Java,Xml,Jaxb,Xsd,在我的xsd中,我有如下内容: <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"

在我的xsd中,我有如下内容:

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

我从上面的xsd生成了JAXB类,创建了一个Server类型的对象,并填充了名为disk的arraylist。现在,当我尝试将服务器对象封送到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标记列表包含在标记中。如果可能,怎么做?

如果你想在服务器标签中多次出现标签,请使用此标签

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


声明磁盘的另一个元素并保留磁盘标签谢谢,我知道它会工作的,我在发布之前测试过它:)