[英]JAXB is not creating class for xsd email pattern element when compile using maven xjc
我正在使用xsd,其中我是驗證電子郵件
<xsd:element name="Company" type="Company"/>
<xsd:complexType name="Company">
<xsd:sequence>
<xsd:element name="Name" type="xsd:string" minOccurs="1" maxOccurs="1" />
<xsd:element name="Website" type="xsd:string" minOccurs="0" maxOccurs="1" />
<xsd:element name="Email" type="EmailAddress" minOccurs="0" maxOccurs="1" />
</xsd:sequence>
<xsd:attribute name="AccountStatus" type="AccountStatus" use="optional" default="Active" />
</xsd:complexType>
<xsd:simpleType name="EmailAddress">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[A-Za-z0-9_]+([-+.'][A-Za-z0-9_]+)*@[A-Za-z0-9_]+([-.][A-Za-z0-9_]+)*\.[A-Za-z0-9_]+([-.][A-Za-z0-9_]+)*"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="AccountStatus">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Active"/>
<xsd:enumeration value="Inactive"/>
</xsd:restriction>
</xsd:simpleType>
這是我使用xjc片段的pom.xml文件
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<goals>
<goal>xjc</goal>
</goals>
<phase>generate-sources</phase>
</execution>
</executions>
<configuration>
<clearOutputDir>false</clearOutputDir>
<outputDirectory>src/main/java</outputDirectory>
<schemaDirectory>src/main/webapp/schemas</schemaDirectory>
<includeSchema>**/*.xsd</includeSchema>
<bindingDirectory>src/main/resources/bindings</bindingDirectory>
<bindingFiles>binding.xml</bindingFiles>
<enableIntrospection>false</enableIntrospection>
</configuration>
</plugin>
這是我的binding.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<jaxb:bindings version="2.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb">
<jaxb:bindings>
<jaxb:globalBindings generateElementProperty="false" />
</jaxb:bindings>
這是生成的Company.java類
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Company", propOrder = {
"name",
"website",
"email"
})
public class Company {
@XmlElement(name = "Name", required = true)
protected String name;
@XmlElement(name = "Website")
protected String website;
@XmlElement(name = "Email")
protected String email;
@XmlAttribute(name = "AccountStatus")
protected AccountStatus accountStatus;
//setter and getters
}
看到沒有適用於我的電子郵件屬性的電子郵件模式。 為什么呢
當我使用Maven編譯我的代碼時,沒有EmailAddress.java類將模式應用於Company.java中的我的電子郵件屬性。 AccountStatus也是一個簡單的類型,但是maven創建了AccountStatus.java類。 當我使用Maven進行編譯時,為什么Maven沒有創建EmailAddress.java類? 我的圖案有問題嗎?
謝謝
因為對應的架構類型是枚舉,所以生成了AccountStatus
。 對於其他簡單類型(即帶有模式的類型),將不會生成類。 不為EmailAddress
類型生成類的原因有兩個:
Marshaller
/ Unmarshaller
上設置Schema
實例來驗證該值(請參閱: http : //blog.bdoughan.com/2010/12/jaxb-and-marshalunmarshal-schema.html )。 而是,該屬性將基於基本架構類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.