isSet 方法不是使用 jaxb2-basics 简化插件生成的

问题描述 投票:0回答:1

我有一个模式,在

<xs:choice/>
块中包含两个元素,如以下片段所示:

<xs:complexType name="POCD_MT000040.Component2">
    <xs:sequence>
        <xs:element name="realmCode" type="CS" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element name="typeId" type="POCD_MT000040.InfrastructureRoot.typeId" minOccurs="0"/>
        <xs:element name="templateId" type="II" minOccurs="0" maxOccurs="unbounded"/>
        <xs:choice>
            <xs:element name="nonXMLBody" type="POCD_MT000040.NonXMLBody"/>
            <xs:element name="structuredBody" type="POCD_MT000040.StructuredBody"/>
        </xs:choice>
    </xs:sequence>
    <xs:attribute name="nullFlavor" type="NullFlavor" use="optional"/>
    <xs:attribute name="typeCode" type="ActRelationshipHasComponent" use="optional" fixed="COMP"/>
    <xs:attribute name="contextConductionInd" type="bl" use="optional" fixed="true"/>
</xs:complexType>

顺便说一下,这是 HL7/CDA 规范模式的一部分。

好吧,我使用

maven-jaxb2-plugin
来生成 Java 类,并使用
jaxb2-basics
插件来简化复杂元素,例如
nonXMLBody
structuredBody
。假设我有一个包含以下内容的绑定文件:

<jxb:bindings
    xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
    xmlns:simplify="http://jaxb2-commons.dev.java.net/basic/simplify"
    jxb:extensionBindingPrefixes="xjc simplify"
    version="2.1">

    <jxb:globalBindings
        typesafeEnumMaxMembers="1000"
        generateMixedExtensions="true"
        generateIsSetMethod="true"
        choiceContentProperty="true">

        <xjc:serializable uid="1" />
    </jxb:globalBindings>

    <jxb:bindings schemaLocation="xsd/POCD_MT000040.xsd">
        <jxb:bindings node="xs:complexType[@name='POCD_MT000040.Component2']//xs:choice">
            <simplify:as-element-property />
        </jxb:bindings>
    </jxb:bindings>
</jxb:bindings>

属性按预期生成:

protected POCDMT000040NonXMLBody nonXMLBody;
protected POCDMT000040StructuredBody structuredBody;

但是,虽然我在全局绑定中使用

generateIsSetMethod="true"
,但根本没有生成方法
isSetNonXMLBody ( )
isSetStructuredBody ( )
。不过,其余属性的等效方法也存在,例如
isSetTypeId ( )

我是否缺少任何我应该知道的在上述元素中生成这些方法的选项?

java xjc maven-jaxb2-plugin jaxb2-basics
1个回答
0
投票

自从 jaxb2-basics 现已合并到 jaxb-tools 存储库后,在 jaxb-tools 存储库中创建了新问题:https://github.com/highsource/jaxb-tools/issues/453

我已经看到简化插件创建的属性不像 xjc 属性那样被包装,并且完成的包装负责像 isSet 方法这样的自定义。

我将在提供时用 PR 更新答案,然后在可能的情况下在完成时发布版本

© www.soinside.com 2019 - 2024. All rights reserved.