JAXB Examples
ModifyMarshal Example
วิธีการปรับแต่งแบบอย่างแบบพื้นฐาน
1. The tut-install/javaeetutorial5/examples/jaxb/modify-marshal/src/modifymarshal/Main.java ประกาศ imports สาม standard Java classes รวมกับอีกสี่ JAXB binding framework classes และ primer.po package:
import java.io.FileInputStream;
import java.io.IOException;
import java.math.BigDecimal;
import javax.xml.bind.JAXBContext;import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import primer.po.*
2. สร้าง JAXBContext เพื่อควบคุมคลาสที่สร้างขึ้นใน primer.po
JAXBContext jc = JAXBContext.newInstance( "primer.po" );
3. Unmarshaller ถูกสร้างขึ้น และ po.xml คือ unmarshalled
Unmarshaller u = jc.createUnmarshaller();
PurchaseOrder po = (PurchaseOrder)u.unmarshal( new FileInputStream( "po.xml" ));
4. Methods set ถูกใช้เพื่อปรับแต่งข้อมูลใน address branch ของ content tree
USAddress address = po.getBillTo();
address.setName( "John Bob" );
address.setStreet( "242 Main Street" );
address.setCity( "Beverly Hills" );
address.setState( "CA" );
address.setZip( new BigDecimal( "90210" ));
5. สร้าง Marshaller และอัพเดต XML content คือ marshalled โดยใช้ system.out
setProperty API ใช้ระบุ output encoding โดยในตัวอย่างนี้ ใช้ XML format
Marshaller m = jc.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
m.marshal( po, System.out )
UnmarshalValidate Example
ตัวอย่างที่แสดงให้เห็นถึงการตรวจสอบ Unmarshal วิธีการเปิดการตรวจสอบระหว่าง Unmarshalling (JAXB จัดหาฟังค์ชั่นสำหรับตรวจสอบระหว่างการทำ Unmarshalling แต่ไม่ทำระหว่าง marshalling)
1. The tut-install/javaeetutorial5/examples/jaxb/unmarshal-validate/src/unmarshalvalidate/Main.java ประกาศ imports สำหรับสาม standard Java classes รวมกับเจ็ด JAXB binding framework classes และ the primer.po package:
import java.io.FileInputStream;
import java.io.IOException;
import java.math.BigDecimal;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.UnmarshalException;
import javax.xml.bind.Unmarshaller;
import javax.xml.bind.ValidationEvent;
import javax.xml.bind.util.ValidationEventCollector;
import primer.po.*;
2. สร้าง JAXBContext สำหรับควบคุมการสร้างคลาสใน primer.po
JAXBContext jc = JAXBContext.newInstance( "primer.po" );
3. สร้าง Unmarshaller
Unmarshaller u = jc.createUnmarshaller();
4. Default ของ JAXB Unmarshaller ValidationEventHandler คือยอมให้ส่ง validation warnings และ errors โดย system.out. และ default configuration เป็นสาเหตุให้การทำ unmarshal ล้มเหลว เมื่อตรวจสอบความถูกต้องในครั้งแรก
u.setValidating( true );
5. ความพยายามที่จะทำ unmarshal po.xml เป็น Java content tree สำหรับตัวอย่างนี้ po.xml จะ deliberate error (ตั้งใจให้ error)
PurchaseOrder po = (PurchaseOrder)u.unmarshal(
new FileInputStream("po.xml"));
6. Default ของการตรวจสอบ event handler ทำการตรวจข้อผิดพลาด ด้วยการสร้างเอาท์พุต โดย system.out หลังจากนั้น exception จะถูก thrown
} catch( UnmarshalException ue ) {
System.out.println( "Caught UnmarshalException" );
} catch( JAXBException je ) {
je.printStackTrace();
} catch( IOException ioe ) {
ioe.printStackTrace();
}
การปรับแต่งแบบอย่าง
Inline Customizations
การปรับแต่งในส่วนของ binding JAXB จะถูกสร้างโดยการใช้ความหมายในส่วนของ binding declaration ในไฟล์ XML schema โดยการทำในส่วนของ
โดยฟอร์มทั่วๆไปของการปรับแต่งแบบ inline จะเป็นดังเช่นนี้

External Binding Customization Files

- ในส่วนของ schemaLocation เป็นการอ้างอิง URI ไปยัง schema ในระยะไกล
- Node เป็นในส่วนของ Xpath 1.0 โดยเป็นตัวระบุใน schema node ที่อยู่ภายใน schemaLocation ซึ่งจะมีการสร้างความสัมพันธ์เข้ากับการทำ binding declaration
ยกตัวอย่างเช่น ในส่วนของ schemaLocation และการประกาศ node ใน JAXB binding declaration file โดยจะมีระบุชื่อของ schema และตำแหน่งของ schema node จะได้เป็น
นอกจากนี้ถ้าในกรณีที่มีการพูดถึงองค์ประกอบที่มีชื่อเป็น ZipCodeType ก็จะได้เป็น
ตัวอย่าง Java-to-Schema
Java-to-Schema เป็นตัวอย่างของการแสดงวิธีการใช้ annotation(คำสั่ง)ต่างๆ เพื่อแปลงจาก Java classes ไปเป็นในรูปแบบของ XML
สำหรับ JDK 6 ทำตามลำดับเหล่านี้ก่อนที่จะรันตัวอย่างใดๆของ Java-to-Schema
1. เปลี่ยน directory ของ Java-to-Schema example เป็นที่เดียว ตัวอย่างเช่น
tut-install/javaeetutorial5/examples/jaxb/j2s-create-marshal
2. รันคำสั่งดังนี้
ant update-endorsed
คำสั่งนี้จะเป็นการสร้าง directory ที่ได้รับการอนุญาตใน JDK และ คัดลอด file webservice.api.jar จาก Application Server's lib/endorsed/ directory มาใน directory นี้
ตัวอย่างการสร้าง Marshal
ตัวอย่างนี้จะเป็นการอธิบายการทำ databinding ของ Java-to-Schema โดยจะแสดงให้เห็นถึงการทำ marshalling และ unmarshalling ของ JAXB annotated classes และยังแสดงว่าจะทำงาน JAXP 1.3 validation ในขณะunmarshalling time โดยใช้ไฟล์ schema ที่ถูกสร้างขึ้นจาก JAXB mapped classes ได้อย่างไร
ไฟล์ schema (bc.xsd) สามารถสร้างได้โดยคำสั่งต่อไปนี้
schemagen src/cardfile/*.java
cp schema1.xsd bc.xsd
** schema.xsd จะถูกคัดลอกเป็น bc.xsd เนื่องจาก schemagon ไม่อนุญาตให้เรากำหนดชื่อของ schema ได้ตามใจชอบ
ตัวอย่าง Java-to-Schema
การสร้างและ รันตัวอย่างการสร้าง Marshal โดยใช้ NetBeans IDE
สามารถทำตามขั้นตอนได้ดังนี้
1. ใน NetBeans IDE เลือก File->Open Project
2. ในหน้า Open Project ให้เราเลือก Directory ที่เก็บ example ไว้ ตัวอย่างเช่น
tut-install/javaeetutorial5/examples/jaxb/
3. เลือกโฟลเดอร์ j2s-create-marshal
4. เลือก Open as Main Project โดยคลิกในช่อง check box
5. เลือก Open Project
6. คลิกขวาที่ j2s-create-marshal ที่เราได้มาเลือก Run
การสร้างและ รันตัวอย่างการสร้าง Marshal โดยใช้ Ant
เพื่อที่จะ compile และ run ตัวอย่างการสร้าง Marshal โดยใช้ Ant บน terminal window ให้เราไปที่ directory tut-install/javaeetutorial5/examples/jaxb/ j2s-create-marshal/ และพิมพ์ดังนี้
ant runapp
ตรวจแล้วครับ
ตอบลบ