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]
我有一个关于 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]