Java Language
XJC
Ricerca…
introduzione
XJC è uno strumento Java SE che compila un file di schema XML in classi Java completamente annotate.
È distribuito all'interno del pacchetto JDK e si trova in /bin/xjc
path.
Sintassi
- xjc [opzioni] file di schema / URL / dir / jar ... [-b bindinfo] ...
Parametri
Parametro | Dettagli |
---|---|
file di schema | Il file dello schema xsd da convertire in java |
Osservazioni
Lo strumento XJC è disponibile come parte del JDK. Permette di creare codice java annotato con annotazioni JAXB adatto per (un) marshalling.
Generazione di codice Java da semplice file XSD
Schema XSD (schema.xsd)
Il seguente schema xml (xsd) definisce un elenco di utenti con name
e reputation
attributi.
<?xml version="1.0"?>
<xs:schema version="1.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:ns="http://www.stackoverflow.com/users"
elementFormDefault="qualified"
targetNamespace="http://www.stackoverflow.com/users">
<xs:element name="users" type="ns:Users"/>
<xs:complexType name="Users">
<xs:sequence>
<xs:element type="ns:User" name="user" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="User">
<xs:attribute name="name" use="required" type="xs:string"/>
<xs:attribute name="reputation" use="required">
<xs:simpleType>
<xs:restriction base="xs:int">
<xs:minInclusive value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:schema>
Usando xjc
Ciò richiede il percorso dello strumento xjc (binari JDK) nella variabile del percorso del sistema operativo.
La generazione del codice può essere avviata usando
xjc schema.xsd
Questo genererà file java nella directory di lavoro.
File di risultati
Ci saranno alcuni commenti aggiuntivi, ma fondamentalmente i file java generati hanno il seguente aspetto:
package com.stackoverflow.users;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlType;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Users", propOrder = {
"user"
})
public class Users {
protected List<User> user;
public List<User> getUser() {
if (user == null) {
user = new ArrayList<User>();
}
return this.user;
}
}
package com.stackoverflow.users;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlType;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "User")
public class User {
@XmlAttribute(name = "name", required = true)
protected String name;
@XmlAttribute(name = "reputation", required = true)
protected int reputation;
public String getName() {
return name;
}
public void setName(String value) {
this.name = value;
}
public int getReputation() {
return reputation;
}
public void setReputation(int value) {
this.reputation = value;
}
}
package com.stackoverflow.users;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.annotation.XmlElementDecl;
import javax.xml.bind.annotation.XmlRegistry;
import javax.xml.namespace.QName;
@XmlRegistry
public class ObjectFactory {
private final static QName _Users_QNAME = new QName("http://www.stackoverflow.com/users", "users");
public ObjectFactory() {
}
public Users createUsers() {
return new Users();
}
public User createUser() {
return new User();
}
@XmlElementDecl(namespace = "http://www.stackoverflow.com/users", name = "users")
public JAXBElement<Users> createUsers(Users value) {
return new JAXBElement<Users>(_Users_QNAME, Users.class, null, value);
}
}
package-info.java
@javax.xml.bind.annotation.XmlSchema(namespace = "http://www.stackoverflow.com/users", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package com.stackoverflow.users;
Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow