簡體   English   中英

Java class 到 XSD

[英]Java class to XSD

有人可以告訴我 XSD 與這個 Java class 匹配嗎?

public class MyClass {

    private List<String> list1;

    private List<String> list2;

    private XMLGregorianCalendar date;

    // getters and setters
}

我已經嘗試了以下方法,但我收到了一個:attribute, :attributeGroup, :anyAttribute is expected錯誤:

<xs:element name="myClass">
  <xs:complexType>
    <xs:sequence minOccurs="0" maxOccurs="unbounded">
      <xs:element name="list1" type="xs:string"/>
    </xs:sequence>
    <xs:sequence minOccurs="0" maxOccurs="unbounded">
      <xs:element name="list2" type="xs:string"/>
    </xs:sequence>
    <xs:element name="date" nillable="true" type="xs:dateTime"/>
  </xs:complexType>
</xs:element>

所以看來我沒有正確使用<xs:sequence>標簽。 有人可以闡明一下嗎? (我遠不是 XML 相關的專家)...

我正在使用 Spring Boot 1.4.4.RELEASE 版本和 Java 7。

xs:sequence xs:complexType中的 xs:sequence 定義了子元素必須出現的特定順序。 要創建元素列表,您只需在要重復的xs:element標簽上直接使用minOccursmaxOccurs ,如下所示:

<xs:element name="myClass">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="list1" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="list2" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="date" nillable="true" type="xs:dateTime"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

這應該創建您期望的 class 並需要 XML ,如下所示(標簽的順序很重要):

<myClass>
  <list1>a</list1>
  <list1>b</list1>
  <list2>y</list2>
  <list2>z</list2>
  <date>2019-06-26T00:00:00.0000000Z</date>
</myClass>

minOccursmaxOccurs放在xs:sequence標記上需要重復整個元素序列。

我已經自己解決了。 這是 XSD:

<xs:element name="myClass">
  <xs:complexType>
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="list1" type="xs:string"/>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="list2" type="xs:string"/>
      <xs:element name="date" nillable="true" type="xs:dateTime"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM