我使用 JAXB 将 XSD 模式绑定到 POCO。我尝试了两种不同的方法来编写 XSD 架构,但每种方法都有一个缺陷:
选项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>
不是一个选项,因为元素可能有空格。