gpt4 book ai didi

java - 从同一 Jaxb 架构文件创建多个 @XmlRootElement

转载 作者:行者123 更新时间:2023-12-01 10:47:20 25 4
gpt4 key购买 nike

我有以下 JAXB .xsd 架构文件:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
jaxb:version="2.1" xmlns="some.namespace.com"
targetNamespace="some.namespace.com">

<xs:element name="outerModel">
<xs:annotation>
<xs:appinfo>
<jaxb:class name="OuterModelDto" />
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" name="innerModel" type="innerModelDto" />
</xs:sequence>
</xs:complexType>
</xs:element>

<xs:complexType name="innerModelDto">
<xs:sequence>
<xs:element name="fullname" type="xs:string" />
<xs:element name="surname" type="xs:string" />
</xs:sequence>
<xs:attribute name="id" type="xs:string" use="required" />
</xs:complexType>
</xs:schema>

这将创建一个 OuterModelDto 和一个 InnerModelDto 类。 OuterModelDto 使用 @XmlRootElement 进行注释,但 InnerModelDto 则没有。我如何确保 InnerModelDto 也用 @XmlRootElement 进行注释?

一种解决方案是将 innerModelDto complexType 包装在一个元素中,这意味着我最终在两个 Dto 上都得到了 @XmlRootElement ,但是在 OuterModelDto 序列化期间,命名空间信息被序列化,这是我不想要的。

最佳答案

您可以在架构中分离 complexTypeelement 定义。每个元素都会产生一个@XmlRootElement注释。

确保在架构中声明一些命名空间前缀以便能够引用类型,请参阅此处的xmlns:tns:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
jaxb:version="2.1"
targetNamespace="some.namespace.com"
xmlns:tns="some.namespace.com">

<xs:complexType name="OuterModelDto">
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" name="innerModel" type="innerModelDto" />
</xs:sequence>
</xs:complexType>

<xs:complexType name="InnerModelDto">
<xs:sequence>
<xs:element name="fullname" type="xs:string" />
<xs:element name="surname" type="xs:string" />
</xs:sequence>
<xs:attribute name="id" type="xs:string" use="required" />
</xs:complexType>

<xs:element name="outerModel" type="tns:OuterModelDto" />
<xs:element name="innterModel" type="tns:InnerModelDto" />

</xs:schema>

关于java - 从同一 Jaxb 架构文件创建多个 @XmlRootElement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34093610/

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