2017-04-25 106 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>