具有多个元素的xml的JAXB Xml Shema

时间:2017-04-25 16:25:56

标签: java xml jaxb

我有一个xml shema来编组和解组xml。

现在我的问题:

我获得了具有以下结构的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>

有多个地址属性,每种属性都有所不同。

我如何设置我的shema,所以它会接受像这样的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>

提前致谢

低糜

1 个答案:

答案 0 :(得分:1)

有许多方法可以编写用于建模XML文件的模式。 所以给定的架构只是一个例子 它定义并引用了几个名为complexType的s,   从而避免过深的嵌套结构 需要maxOccurs="unbounded"才能这样做   <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>