JAXB EclipseLink 与可空元素编组 CHOICE 的问题

发布于 2024-11-06 00:10:52 字数 730 浏览 1 评论 0 原文

我有一个定义如下的模式:

<complexType name="x">
    <sequence>
        <element name="year" type="date"/>
            <choice>
                <element name="comuneNascita" type="string" nillable="true"/>
                <element name="statoNascita" type="string" nillable="true"/>
             </choice>
    </sequence>
</complexType>

当我尝试编组用 xjc (使用 xjc:simple 选项)生成的类时,我得到这个结果:

[...]
<statoNascita xsi:nil="true"/>
<comuneNascita>xxx</comuneNascita>
[...]

删除 nillable="true" 解决了这个问题,但我必须指定一个有效元素(没有被消灭)。

有什么解决办法吗?

I have a schema defined as this:

<complexType name="x">
    <sequence>
        <element name="year" type="date"/>
            <choice>
                <element name="comuneNascita" type="string" nillable="true"/>
                <element name="statoNascita" type="string" nillable="true"/>
             </choice>
    </sequence>
</complexType>

When I try to marshall the class generated with xjc ( with xjc:simple option ) and I get this result:

[...]
<statoNascita xsi:nil="true"/>
<comuneNascita>xxx</comuneNascita>
[...]

Removing nillable="true" solve this problem but then I have to specify a valid element ( not nilled ).

Any workaround?

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

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

发布评论

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

评论(1

琴流音 2024-11-13 00:10:52

您可以通过按如下方式注释属性来避免问题:

@XmlElements({
   @XmlElement(name="comuneNascita", type=String.class),
   @XmlElement(name="statoNascita", type=String.class),
})

您可以使用 JAXB 绑定文件让 XJC 生成如上注释的属性:

<?xml version="1.0" encoding="UTF-8"?>
<bindings xmlns="http://java.sun.com/xml/ns/jaxb"
          version="2.1">
    <globalBindings choiceContentProperty="true"/>
</bindings> 

了解更多信息

You can avoid your problem by having a property annotated as follows:

@XmlElements({
   @XmlElement(name="comuneNascita", type=String.class),
   @XmlElement(name="statoNascita", type=String.class),
})

You can get XJC to generate a property annotated as above using a JAXB bindings file:

<?xml version="1.0" encoding="UTF-8"?>
<bindings xmlns="http://java.sun.com/xml/ns/jaxb"
          version="2.1">
    <globalBindings choiceContentProperty="true"/>
</bindings> 

For More Information

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