jaxb part 2
TRANSCRIPT
JAXB Part 2
XML Schema Definition(XSD)
XML Schema เป็นการกําหนดวา่โครงสร้างของเอกสาร XML
ชนิดข้อมลูของ xsd แบง่ออกเป็น 2 ประเภทใหญ่ๆ
‐ Simple type คือภายใน element จะมีข้อความอยูเ่ท่านัน้
(ไมม่ี attribute)
‐ Complex type คือภายใน element จะมี element ลกูอยู ่และมี attribute อยูด่้วยก็ได้
Example XSD Simple type
<xsd:element name="dateborn"> <xsd:simpleType>
<xsd:restriction base="xsd:date"> <xsd:pattern value="\d{2}‐\d{2}" />
</xsd:restriction></xsd:simpleType>
</xsd:element>
Example XSD Complex type
<xs:complexType name="addRequest"><xs:sequence><xs:element name="detail" type="xs:string" minOccurs="0"/><xs:element name="telNo" type="xs:string" minOccurs="0"/><xs:element name="firstName" type="xs:string"/><xs:element name="lastName" type="xs:string"/><xs:element name="numberID" type="xs:string"/></xs:sequence></xs:complexType>
Example XSD
<xs:element name="Exception" nillable="true" type="tns:exceptionBean"/><xs:element name="addRequest" type="tns:addRequest"/><xs:element name="addRequestResponse" type="tns:addRequestResponse"/><xs:element name="cancelRequestR" type="tns:cancelRequestR"/><xs:element name="cancelRequestRResponse" type="tns:cancelRequestRResponse"/><xs:element name="completeRequestR" type="tns:completeRequestR"/><xs:element name="completeRequestRResponse" type="tns:completeRequestRResponse"/><xs:element name="getRequestStudent" type="tns:getRequestStudent"/><xs:element name="getRequestStudentResponse" type="tns:getRequestStudentResponse"/><xs:element name="getSpecialize" type="tns:getSpecialize"/><xs:element name="getSpecializeResponse" type="tns:getSpecializeResponse"/>
Example XSD(2)
คือ class ที่คอยทําหน้าที่สร้าง object ให้กบั class อื่นๆ เมื่อมีการ request
public Student createStudent() {return new Student();
}
ตวัอยา่ง code ใน ObjectFactory
จาก Java เป็น XML
Main.java
เป็นสว่นที่ใส ่input ที่จะทําการเปลี่ยนให้อยูใ่นรูป XML โดยจะต้องทําการสร้างตวัแปรที่จะใช้รับคา่ input ดงันี ้
Student s[] = new Student[7];for(int i=0;i<=6;i++){
s[i] = new ObjectFactory().createStudent();}
Example Main.java
ตัวอย่างการ input ข้อมูลลงใน file XML
s[1].setStudentID(String.valueOf("51050560"));s[1].setStudentFirstName(String.valueOf("เกศริิน "));s[1].setStudentLastName(String.valueOf("คณุสืบพงษ์พนัธ์ "));
Example Main.java(2)
try {javax.xml.bind.JAXBContext jaxbCtx = javax.xml.bind.JAXBContext.newInstance(s[1].getClass().getPackage().getName());
javax.xml.bind.Marshaller marshaller = jaxbCtx.createMarshaller();marshaller.setProperty(javax.xml.bind.Marshaller.JAXB_ENCODING, "UTF‐8"); //NOI18Nmarshaller.setProperty(javax.xml.bind.Marshaller.JAXB_FORMATTED_OUTPUT,
Boolean.TRUE);marshaller.marshal(s[1], System.out);
} catch (javax.xml.bind.JAXBException ex) {// XXXTODO Handle exceptionjava.util.logging.Logger.getLogger("global").log(java.util.logging.Level.SEVERE, null, ex);
//NOI18N}
Output XML
จาก XML เป็น Java
File XML
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <ns2:student xmlns:ns2="http://webservice.component/"><Student_ID>51050560</Student_ID> <Student_FirstName>เกศริิน </ Student_FirstName> <Student_LastName>คุณสืบพงษ์พนัธ์ </ Student_LastName> </ns2:student>
Main.java
Student s = new ObjectFactory().createStudent();
try {javax.xml.bind.JAXBContext jaxbCtx =
javax.xml.bind.JAXBContext.newInstance(s.getClass().getPackage().getName());javax.xml.bind.Unmarshaller unmarshaller = jaxbCtx.createUnmarshaller();s = (Student) unmarshaller.unmarshal(new java.io.File("D://Student.XML"));
//NOI18N} catch (javax.xml.bind.JAXBException ex) {// XXXTODO Handle exceptionjava.util.logging.Logger.getLogger("global").log(java.util.logging.Level.SEVERE,
null, ex); //NOI18N}
Main.java(2)
ตัวอย่าง code ที่แสดงในส่วน output
System.out.println("Student Detail");System.out.print(s.getStudentID());System.out.print("\t"+s.getStudentFirstName());System.out.println("\t"+s.getStudentLastName());
Output Java