gpt4 book ai didi

java - 当一个或多个元素是列表时(maxOccurs=unbounded),是否可以让 JAXB 忽略 中元素的顺序?

转载 作者:太空宇宙 更新时间:2023-11-04 10:51:24 26 4
gpt4 key购买 nike

我一直找不到这个问题的答案。 <all>标签不是答案,因为它将子元素限制为 maxOccurs=“1” .

假设您的 XSD 包含:

<xsd:sequence>
<xsd:element name=“name” type=“xsd:string” minOccurs=“1”/>
<xsd:element name=“children” type=“xsd:string” minOccurs=“0” maxOccurs=“unbounded”/>
</xsd:sequence>

是否有任何方法可以让 JAXB 使用此 XSD 来读取 XML,其中元素的顺序与 XSD 中定义的顺序不同?

最佳答案

我不知道 JAXB 的完整解决方案。

但是,JAXB 绑定(bind)


<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="children" type="xs:string"/>
<xs:element name="name" type="xs:string"/>
</xs:choice>
</xs:complexType>

将解码您想要的实例,并在再次编码它们时保持它们稳定。

缺点是:

  • 相应的 Java 类有一个(类型化)ListchildrenOrName,而不是两个单独的属性(在这种情况下,无论如何您都会失去 name 元素的位置)
  • 您必须手动检查列表中是否只有一个名字。

关于java - 当一个或多个元素是列表时(maxOccurs=unbounded),是否可以让 JAXB 忽略 <sequence> 中元素的顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47802418/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com