2017-04-25 104 views
0

我有一個xml shema元帥和unmarshal xml。JAXB Xml Shema for xml with multiple Elements

現在我的問題:

我得到的XML文件結構如下:

<?xml version="1.0" encoding="UTF-8"?> 
    <request id="2"> 
    <body> 
    <adress type="pfad"> 
    exsample/Barcode02 
    </adress> 
    <adress type="name"> 
    Barcode02 
    </adress> 
    <adress type="nummer"> 
    105 
    </adress> 
</body> 
</request> 

有多種ADRESS atrributes,在各類型不同。

我該如何設置我的shema,因此它會接受這樣的xml文件。 目前,它看起來像以下:提前

低糜

回答

1

有許多方法寫一個架構建模XML文件

<xs:complexType name="eventType"> 
    <xs:complexContent> 
     <xs:extension base="bt:bodyType"> 
     <xs:sequence> 
      <xs:element ref="pdt:adress" /> 
     </xs:sequence> 
     </xs:extension> 
    </xs:complexContent> 
    </xs:complexType> 

感謝。 所以給定的模式僅僅是一個例子。
它定義並引用了幾個名爲complexType的s, ,從而避免了過深的嵌套結構。
需要maxOccurs="unbounded",因此 a <body>可以包含多個<adress>元素。

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 

    <xs:element name="request" type="request" /> 

    <xs:complexType name="request"> 
    <xs:sequence> 
     <xs:element name="body" type="body" /> 
    </xs:sequence> 
    <xs:attribute name="id" type="xs:int"/> 
    </xs:complexType> 

    <xs:complexType name="body"> 
    <xs:sequence> 
     <xs:element name="adress" type="adress" maxOccurs="unbounded" /> 
    </xs:sequence> 
    </xs:complexType> 

    <xs:complexType name="adress"> 
    <xs:simpleContent> 
     <xs:extension base="xs:string"> 
     <xs:attribute name="type" type="xs:string" /> 
     </xs:extension> 
    </xs:simpleContent> 
    </xs:complexType> 

</xs:schema>