jax2b maven插件简单类型

jax2b maven plugin simple type

我有一个关于 jaxb meven 插件及其生成方式的问题 类。 我有这个 xsd:

<xs:element maxOccurs="1" minOccurs="0" name="CtctDtls" type="ContactDetails2"/>


 <xs:complexType name="ContactDetails2">
        <xs:sequence>
            <xs:element maxOccurs="1" minOccurs="0" name="NmPrfx" type="NamePrefix1Code"/>
            <xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max140Text"/>
            <xs:element maxOccurs="1" minOccurs="0" name="PhneNb" type="PhoneNumber"/>
            <xs:element maxOccurs="1" minOccurs="0" name="MobNb" type="PhoneNumber"/>
            <xs:element maxOccurs="1" minOccurs="0" name="FaxNb" type="PhoneNumber"/>
            <xs:element maxOccurs="1" minOccurs="0" name="EmailAdr" type="Max2048Text"/>
            <xs:element maxOccurs="1" minOccurs="0" name="Othr" type="Max35Text"/>
        </xs:sequence>
    </xs:complexType>

 <xs:simpleType name="Max2048Text">
        <xs:restriction base="xs:string">
            <xs:minLength value="1"/>
            <xs:maxLength value="2048"/>
        </xs:restriction>
    </xs:simpleType>

这个使用 org.codehaus.mojo ,jaxb2-maven-plugin 被翻译成:

public class ContactDetails2 {

   ...
    protected String faxNb;
    @XmlElement(
        name = "EmailAdr"
    )
    protected String emailAdr;
    ...

}

编组后会转换为:

<CtctDtls>
<EmailAdr/>
</CtctDtls> 

这是无效的,因为如果存在电子邮件,它应该至少有一个字符。 我怎样才能解决这个问题?我可以更改 Maven 插件配置吗?或者我还能做什么,如果电子邮件是空字符串,则不会生成?

https://wiki.xmldation.com/General_Information/ISO_20022/pain.008

我们通过创建一个 jaxb 适配器来实现这一点,在解组中字符串为空我们返回 null。 [https://www.javacodegeeks.com/2014/12/jaxb-tutorial-xml-binding.html#adapters][1]