Come creare classi pojo da XSD?
Sto usando il plugin Spring maven, voglio creare classi POJO dallo schema xml specificato in una particolare cartella. Ho provato con il comando xjc
attraverso il codice java, ma non genera quelle classi. in secondo luogo, ho provato con jaxb
, ma si tratta di xml
file non di uno schema xsd
mentre marshell/unmarshelling. Penso che questo non sia un modo per creare POJO da xsd
.
Qual è un modo corretto per generare classi da xsd in java?
Di seguito è riportato XSD
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Employee">
<xs:complexType>
<xs:sequence>
<xs:element name="empId" type="xs:long"/>
<xs:element name="lastName" type="xs:string"/>
<xs:element name="title" type="xs:string"/>
<xs:element name="salary" type="xs:integer"/>
<xs:element name="address">
<xs:complexType>
<xs:sequence>
<xs:element name="city" type="xs:string"/>
<xs:element name="street" type="xs:string"/>
<xs:element name="zipcode" type="xs:integer"/>
<xs:element name="privatePhoneNo">
<xs:complexType>
<xs:sequence>
<xs:element name="privateMobile" type="xs:string"/>
<xs:element name="privateLandline" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
4 answers
La mia raccomandazione è di andare con
JAXB
.
L'ho testato in eclipse
, funziona bene per me. Il mio suggerimento è provare a generare il POJO da command line
o con l'aiuto di eclipse
. Una volta riuscito configurarlo con maven
per generare il POJO build time
.
Ci sono diversi tutorial per imparare questo, si prega di seguire il link qui sotto(s) in base alle proprie preferenze:
- Genera classe POJO da XSD in Eclipse
- Genera classe POJO dallo schema XSD riga di comando
- Genera classi POJO da XSD usando
XJC
Plugin Maven
Anche i link di youtube:
Spero che aiuti!
Sentitevi liberi di commentare se si verifica qualsiasi problema.
Un modo semplice per convertire .xsd
file in file Java è xjc strumento. Basta eseguire il seguente comando nella stessa directory di lavoro:
xjc test.xsd
Per maggiori informazioni: Usare jaxb2-maven-plugin è il modo più semplice. Definire i plugin come di seguito: Ed eseguire: I file generati si troveranno in <build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<goals>
<goal>xjc</goal>
</goals>
</execution>
</executions>
<configuration>
<schemaDirectory>${project.basedir}/src/main/xsd/</schemaDirectory>
<schemaFiles>MARC21slim.xsd</schemaFiles>
</configuration>
</plugin>
</plugins>
</build>
mvn jaxb2:xjc
target\generated-sources\jaxb
jaxb2-maven-plugin
la versione 2 cambia come la configurazione.
Quanto segue eseguirà xjc su tutto in src/main/resource
e lo metterà com.yourcompany.xsd
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>2.5.0</version>
<executions>
<execution>
<goals>
<goal>xjc</goal>
</goals>
</execution>
</executions>
<configuration>
<sources>
<source>src/main/resources</source>
</sources>
<packageName>com.yourcompany.xsd</packageName>
</configuration>
</plugin>
Controlla il comportamento implicito in https://www.mojohaus.org/jaxb2-maven-plugin/Documentation/v2.5.0/example_xjc_basic.html