При работе с xjc
и schemagen
инструментов, пожалуйста, рассмотреть ту же концепцию, которую мы используем в Java. В java каждый класс является скелетом, а объект - экземпляром. То же самое, что нам нужно рассматривать XSD как скелет и XML как экземпляр.
XJC инструмент: -Xsd to Java Class
Или Unmarshaling
Рассмотрим ниже XSD с пространствами имен, например. Инструмент xjc
будет генерировать класс java вместе с информацией о пакете и объектной фабрикой.
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ir="http://irctc.org/service" targetNamespace="http://irctc.org/service">
<xsd:element name="Customer" type="ir:CustomerType"/>
<xsd:complexType name="CustomerType">
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="src" type="xsd:string"/>
<xsd:element name="dest" type="xsd:string"/>
<xsd:element name="price" type="xsd:float" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
Использование ниже команды
D:\>xjc Customer.xsd parsing a schema... compiling a schema... org\irctc\service\CustomerType.java org\irctc\service\ObjectFactory.java org\irctc\service\package-info.java
Примечание: - Если у вас есть несколько классов Java, то вы можете использовать jaxb.index
файл вместо использования ObjectFactory.java
.
SchemaGen инструмент: -Java Class to Xsd
Или Marshaling
Давайте предположим, что мы хотим создать файл XSD, используя класс Java, то сначала нужно создать ObjectFactory.java
Или jaxb.index
файл и package-info.java
в то же пакет, где у нас есть CustomerType.java
.
package org.irctc.service;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
@XmlRootElement("Customer")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "CustomerType", propOrder = {
"name",
"src",
"dest",
"price"
})
public class CustomerType {
@XmlElement(required = true)
protected String name;
@XmlElement(required = true)
protected String src;
@XmlElement(required = true)
protected String dest;
protected Float price;
public String getName() {
return name;
}
public void setName(String value) {
this.name = value;
}
public String getSrc() {
return src;
}
public void setSrc(String value) {
this.src = value;
}
public String getDest() {
return dest;
}
public void setDest(String value) {
this.dest = value;
}
public Float getPrice() {
return price;
}
public void setPrice(Float value) {
this.price = value;
}
}
Использование ниже команды
D:\>schemagen org.irctc.service.CustomerType Note: Writing D:\schema1.xsd
Приведенная выше команда создаст файл XSD. Пакет класса java будет рассматриваться как пространство имен xsd.
The above details are only for understanding marshaling and unmarshaling process using tools in Jax-B API.
For more details , check below examples
Jax-B Hello World Example
Java-XML mapping with Jax-B 2.0