JAXB を使用して、XSD スキーマを POCO にバインドします。XSD スキーマを記述する 2 つの異なる方法を試しましたが、それぞれに問題があります。
オプション1問題: 各要素は<Elements>
ではなく XMLで表され<Element>
、さらに、 などのコンテナ内にはありません<ElementsContainer>
。
XSD スキーマ
<xs:element name="Root" type="RootType" />
<xs:complexType name="RootType" />
<xs:sequence>
<xs:element name="Elements" type="xs:string" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
ジャワ
RootType r = new RootType();
r.getElements.add("Str1");
r.getElements.add("Str2");
マーシャリングされた XML
<Root>
<Elements>Str1</Elements>
<Elements>Str2</Elements>
</Root>
オプション 2
問題: Java コードの見栄えが悪くなります。
XSD スキーマ
<xs:element name="Root" type="RootType" />
<xs:complexType name="RootType" />
<xs:element name="Elements">
<xs:complexType>
<xs:sequence>
<xs:element name="Element" type="xs:string" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:complexType>
ジャワ
RootType r = new RootType();
r.getElements().getElement().add("Str1");
r.getElements().getElement().add("Str2");
マーシャリングされた XML
<Root>
<Elements>
<Element>Str1</Element>
<Element>Str2</Element>
</Elements>
</Root>
質問:オプション 2のように XML を出力し、オプション 1のようにコードが記述されるスキーマを作成する方法はありますか?
編集: <xs:list>
要素には空白が含まれている可能性があるため、オプションではありません。