具有无序类型的 Jaxb 序列

发布于 2024-12-11 23:55:41 字数 997 浏览 0 评论 0原文

使用架构和 XML 文件,我尝试创建类型 A 的元素,它可以包含类型 A、B 和 C 的嵌套元素。元素类型 A、B 和 C 都是类型 X 的扩展。所以我我想要创建 a 类型元素的内部,并且认为我可以按照我想要的顺序添加任何元素 A、B 或 C。只有 A 可以有嵌套元素。我喜欢这个实现,因为嵌套元素的顺序对于我们的数据模型很重要,并且这些元素在系统中将具有不同的顺序。

<A>
    <B></B>
    <B></B>
    <A>
        <B></B>
        <B></B>
        <C></C>
        <C></C>
    </A>
    <C></C>
</A>

我尝试在 XSD 文件中做一些事情来使其合法。

<xs:complexType name="A">
   <xs:complexContent>
      <xs:extension base="X" >
      <xs:sequence>
         <xs:element name="a" type="A" minOccurs="0" />
         <xs:element name="b" type="B" minOccurs="0" />
         <xs:element name="c" type="C" minOccurs="0" />
      </xs:sequence>
      </xs:extension>
      </xs:complexContent>
</xs:complexType>

我尝试使序列仅包含抽象类型 X 的元素,认为我可以在 XML 文件中使用具体类型 AB 和 C,但这被标记为错误。

Using a schema and XML file I'm trying to create an element of Type A, that can contain nested elements of type A,B, and C. The element types A,B,and C are all extension of type X. So I wanted to create a inside of the type a element, and thought I could add any of elements A,B, or C in whatever order I wanted. Only A can have nested elements. I like this implementation because the ordering of the nested elements is important to our data model, and these elements will be a various order in the system.

<A>
    <B></B>
    <B></B>
    <A>
        <B></B>
        <B></B>
        <C></C>
        <C></C>
    </A>
    <C></C>
</A>

I tried doing a few things in the XSD file to make this legal.

<xs:complexType name="A">
   <xs:complexContent>
      <xs:extension base="X" >
      <xs:sequence>
         <xs:element name="a" type="A" minOccurs="0" />
         <xs:element name="b" type="B" minOccurs="0" />
         <xs:element name="c" type="C" minOccurs="0" />
      </xs:sequence>
      </xs:extension>
      </xs:complexContent>
</xs:complexType>

And I tried making the sequence contain only elements of the abstract type X, thinking I could use the concrete types A B and C in the XML file, but that got flagged as an error.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

Smile简单爱 2024-12-18 23:55:41

如果我正确理解您的用例,您可以使用 @XmlElementRef 注释来利用替换组的 XML 架构概念。

了解更多信息

If I understand your use case correctly you can use the @XmlElementRef annotation to leverage the XML schema concept of substitution groups.

For More Information

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文