JAXB
Java-Xml Binding işini , java 6 ile beraber standart olarak yapan tool diyebiliriz.
bir xsd dosyamız olsun
bu xsd bir ant scriti çalıştırarak gerekli sınıflarınımı oluştrabiliriz.
eger runtime ayarlarınız java 6 ile classpath de eklemeniz gereken library bulunmamaktadır. Standart oldugu için. ancak java 5 kullanıyorsak ayrıca jaxb yi indirmemiz gerekmektedir. yukarıda ki script java 6 içindir. java 1.5 ten onceki versiyonlarda annotation olmadıgı için jaxb kullanmak mumkun degildir.
yukarıda ki script bize aşagıdaki gibi classlar generate edecektir
artık bundan sonrası Marshall - Unmarshall olayları
serialize etmek benzeri olarak marshall düşünülebilir.Bunun için bir junit class yazdıgımızı var sayarsak
lafı uzatıp gevelemeden kısacası budur efendim
jaxb
Java-Xml Binding işini , java 6 ile beraber standart olarak yapan tool diyebiliriz.
bir xsd dosyamız olsun
xmlns:tns="http://www.example.org/objectshop" elementFormDefault="qualified">
bu xsd bir ant scriti çalıştırarak gerekli sınıflarınımı oluştrabiliriz.
eger runtime ayarlarınız java 6 ile classpath de eklemeniz gereken library bulunmamaktadır. Standart oldugu için. ancak java 5 kullanıyorsak ayrıca jaxb yi indirmemiz gerekmektedir. yukarıda ki script java 6 içindir. java 1.5 ten onceki versiyonlarda annotation olmadıgı için jaxb kullanmak mumkun degildir.
yukarıda ki script bize aşagıdaki gibi classlar generate edecektir
@XmlRegistry
public class ObjectFactory {
private final static QName _ObjectShop_QNAME = new QName("http://www.example.org/objectshop", "ObjectShop");
public ObjectFactory() {
}
public ObjectShopType createObjectShopType() {
return new ObjectShopType();
}
@XmlElementDecl(namespace = "http://www.example.org/objectshop", name = "ObjectShop")
public JAXBElementcreateObjectShop(ObjectShopType value) {
return new JAXBElement(_ObjectShop_QNAME, ObjectShopType.class, null, value);
}
}
import java.math.BigInteger;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "ObjectShopType", propOrder = {
"id",
"name",
"yas"
})
public class ObjectShopType {
@XmlElement(required = true)
protected String id;
@XmlElement(required = true)
protected String name;
@XmlElement(required = true)
protected BigInteger yas;
@XmlAttribute
protected String att;
public String getId() {
return id;
}
public void setId(String value) {
this.id = value;
}
public String getName() {
return name;
}
public void setName(String value) {
this.name = value;
}
public BigInteger getYas() {
return yas;
}
public void setYas(BigInteger value) {
this.yas = value;
}
public String getAtt() {
return att;
}
public void setAtt(String value) {
this.att = value;
}
}
artık bundan sonrası Marshall - Unmarshall olayları
serialize etmek benzeri olarak marshall düşünülebilir.Bunun için bir junit class yazdıgımızı var sayarsak
package com.onder.deneme.objectshop.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.math.BigInteger;
import javax.xml.XMLConstants;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import javax.xml.bind.ValidationEvent;
import javax.xml.bind.ValidationEventHandler;
import javax.xml.bind.ValidationEventLocator;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import org.xml.sax.SAXException;
import com.onder.deneme.objectshop.ObjectShopType;
import junit.framework.TestCase;
public class ObjectTest extends TestCase {
protected void setUp() throws Exception {
super.setUp();
}
protected void tearDown() throws Exception {
super.tearDown();
}
public void testUnMarshall() throws JAXBException, FileNotFoundException,
SAXException {
JAXBContext jc = JAXBContext.newInstance("com.onder.deneme.objectshop");
Unmarshaller u = jc.createUnmarshaller();
SchemaFactory sf = SchemaFactory
.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = sf.newSchema(new File(
"/home/faruk/dev/egitim/soa-111/xsd/src/objectshop.xsd"));
u.setSchema(schema);
u.setEventHandler(new ValidationEventHandler() {
// allow unmarshalling to continue even if there are errors
public boolean handleEvent(ValidationEvent ve) {
// ignore warnings
if (ve.getSeverity() != ValidationEvent.WARNING) {
ValidationEventLocator vel = ve.getLocator();
System.out.println("Line:Col[" + vel.getLineNumber() + ":"
+ vel.getColumnNumber() + "]:" + ve.getMessage());
return false;
}
return true;
}
});
JAXBElement bt = (JAXBElement) u.unmarshal(new FileInputStream(
"/home/faruk/dev/egitim/soa-111/xsd/src/objectshop.xml"));
ObjectShopType b = (ObjectShopType) bt.getValue();
System.out.println(b.getName());
Marshaller m = jc.createMarshaller();
m.marshal(bt, System.out);
}
public void testMarshal() throws JAXBException, FileNotFoundException {
JAXBContext jc = JAXBContext.newInstance(ObjectShopType.class);
ObjectShopType objectShop = new com.onder.deneme.objectshop.ObjectFactory().createObjectShopType();
objectShop.setId("Abcwr234");
objectShop.setName("deneme adına");
objectShop.setYas(new BigInteger("23"));
objectShop.setAtt("3451234");
JAXBElementjaxbOjbect = new com.onder.deneme.objectshop.ObjectFactory().createObjectShop(objectShop);
Marshaller m = jc.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
m.marshal(jaxbOjbect, System.out);
}
}
lafı uzatıp gevelemeden kısacası budur efendim
jaxb
Yorumlar
Yorum Gönder