JAXB คืออะไร?
JAXB (The Java Architecture for XML Binding) เป็นส่วนหนึ่งของ JAX API ใน Java EE เพื่อใช้ในการแปลงไปมาระหว่าง XML Schema กับ โครงสร้างข้อมูลในภาษา Java และ แปลงไปมาระหว่าง XML Document กับ Object ในภาษา Java โดยปัจจุบัน JAXB อยู่ที่ Version 2.0
ทำไมจึงต้องใช้ JAXB?
การใช้งาน XML file เพื่อที่จะทำงานหรือเขียนโปรแกรมร่วมกับภาษา Java นั้นเป็นเรื่องยาก ถ้าจะต้องเขียนโปรแกรมเพื่อดูแลจัดการกับ XMLfile เหล่านั้นหรือทำการแปลง XML file เหล่านั้นให้เป็นโครงสร้างในภาษา Java JAXB จึงเป็นทางเลือกหนึ่งในการที่จะดูแลจัดการกับ XML file เหล่านั้นเพื่อมาทำงานร่วมกับภาษา Java ได้อย่างง่ายดาย โดยการใช้ JAXB ทำให้สามารถทำงานกับโครงสร้างและเอกสาร XML ได้ โดยไม่ต้องรู้ถึงโครงสร้างและกระบวนการทำงานภายในของ XML file นอกจากนี้ JAXB ยังมีกระบวนการในการตรวจสอบ (Validation) ซึ่งเป็นกระบวนการที่สำคัญในการทำงานร่วมกับ XML file และทำให้มั่นใจได้มากขึ้นในกระบวนการแปลงไปมาระหว่าง XML กับ Java
JAXB Architecture
JAXB Component ประกอบไปด้วย
Schema Compiler เป็นกระบวนการที่แปลง Schema ที่ใช้อธิบาย XML หรือข้อมูลของ XML ไปเป็น Java
Schema Generator ทำการเปลี่ยนข้อมูลจาก Java ให้ไปเป็น Schema
Binding runtime framework เป็นชุดคำสั่งที่ใช้ในการจัดการกระบวนการ unmarshalling และ marshalling
JAXB Binding Process
- Generate classes : XML Schema จะเป็น input ของกระบวนการในส่วนของ JAXB binding compiler เพื่อที่จะสร้าง JAXB classes โดยมีโครงสร้างตาม Schema ดังกล่าว
- Compile classes : ทุก class ที่ถูกสร้างขึ้น ,ไฟล์ต่างๆ รวมถึง source code ต่างๆ จะถูกนำมา Compile
- Unmarshal : เอกสาร XML ที่ถูกสร้างขึ้นโดยอ้างอิงจากข้อกำหนดใน Schema จะถูกนำมาทำการ unmarshal โดย JAXB Binding framework นอกจากนี้ JAXB ยังสนับสนุนในการทำ unmarshall XML data จากแหล่งข้อมูลอื่นๆนอกจากไฟล์หรือเอกสารต่างๆ เช่น DOM nodes , String buffer , SAX sources เป็นต้น
- Generate content tree : ในการทำ unmarshalling จะมีกระบวนการในการสร้างโครงสร้างต้นไม้สำหรับ object ข้อมูล โดย object เหล่านี้จะถูกสร้างขึ้นจาก JAXB classes ที่กล่าวมาในขั้นตอนที่แล้ว
- Validate (optional) : ในกระบวนการ unmarshalling ยังสามารถตรวจสอบความถูกต้องของเอกสาร XML ก่อนที่จะนำไปสร้างเป็น content ในขั้นตอนต่อไป โดยหากเรามีการแก้ไข content tree ในขั้นถัดไป เราก็สามารถใช้กระบวนการตรวจสอบดูว่ามีความถูกต้องหรือไม่ ก่อนที่จะแปลง content tree กลับเป็นเอกสาร XML
- Process content : Application ทางฝั่งของ Client สามารถที่จะแก้ไขข้อมูลXML ที่ถูกจัดอยู่ในรูปแบบของโครงสร้างต้นไม้ได้
- Marshal : โครงสร้างต้นไม้ที่ผ่านกระบวนการมานั้นจะได้เป็น เอกสารXMLซึ่งเนื้อหาของเอกสาร จะถูกตรวจสอบก่อนที่จะทำการแปลง
ตัวอย่างประเภทข้อมูลในการแปลง Schema-to-Java
XML Schema Type | Java Data Type |
xsd:string | java.lang.String |
xsd:integer | java.math.BigInteger |
xsd:int | int |
xsd:double | double |
xsd:time | javax.xml.datatype.XMLGregorianCalendar |
xsd:anySimpleType | java.lang.Object / java.lang.String |
ตัวอย่างประเภทข้อมูลในการแปลง Java-to-Schema
Java Class | XML Data Type |
java.lang.String / java.net.URI | xs:string |
java.math.BigInteger | xs:integer |
java.util.Date / java.util.Calendar | xs:dateTime |
java.lang.Object | xs:anyType |
javax.xml.datatype.Duration | xs:duration |
java.awt.Image | xs:base64Binary |
สมาชิกในกลุ่มมีการเปลี่ยนแปลงเล็กน้อยนะครับ
ตอบลบ1. นางสาวกมลภัทร ปิติปัญญากุล 51050547
2. นางสาวกัลยาณี ศรีกาญจน์ 51050553
3. นายชลเดช นิธินันทน์ 51050578
4. นายชาตการุณ สุขสำราญ 51050579
5. นางสาวพรรณวดี ศรุติเกรียงไกร 5105062 *Dropวิชานี้ไปแล้วครับ
6. นายณัฐกิตติ์ ศุภฤทธิ์ 51050584**
7. นายอิทธิ เครือณรงค์กุล 51050691**
**ทั้ง 2 คนย้ายมาจากกลุ่ม http://component584.blogspot.com/ ครับ
ตรวจแล้วครับ
ตอบลบ