jaxb part 2

16
JAXB Part 2

Upload: fai-nattakarn

Post on 26-Jun-2015

668 views

Category:

Education


1 download

TRANSCRIPT

Page 1: Jaxb part 2

JAXB Part 2

Page 2: Jaxb part 2

XML Schema Definition(XSD)

XML Schema เป็นการกําหนดวา่โครงสร้างของเอกสาร XML

ชนิดข้อมลูของ xsd แบง่ออกเป็น 2 ประเภทใหญ่ๆ

‐ Simple type คือภายใน element จะมีข้อความอยูเ่ท่านัน้

(ไมม่ี attribute)

‐ Complex type คือภายใน element จะมี element ลกูอยู ่และมี attribute อยูด่้วยก็ได้

Page 3: Jaxb part 2

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>

Page 4: Jaxb part 2

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>

Page 5: Jaxb part 2

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"/>

Page 6: Jaxb part 2

Example XSD(2)

คือ class ที่คอยทําหน้าที่สร้าง object ให้กบั class อื่นๆ เมื่อมีการ request 

public Student createStudent() {return new Student();

}

ตวัอยา่ง code ใน ObjectFactory

Page 7: Jaxb part 2

จาก Java เป็น XML

Page 8: Jaxb part 2

Main.java

เป็นสว่นที่ใส ่input ที่จะทําการเปลี่ยนให้อยูใ่นรูป XML  โดยจะต้องทําการสร้างตวัแปรที่จะใช้รับคา่ input ดงันี ้

Student s[] = new Student[7];for(int i=0;i<=6;i++){

s[i] = new ObjectFactory().createStudent();}

Page 9: Jaxb part 2

Example Main.java

ตัวอย่างการ input ข้อมูลลงใน file XML

s[1].setStudentID(String.valueOf("51050560"));s[1].setStudentFirstName(String.valueOf("เกศริิน "));s[1].setStudentLastName(String.valueOf("คณุสืบพงษ์พนัธ์ "));

Page 10: Jaxb part 2

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}

Page 11: Jaxb part 2

Output XML

Page 12: Jaxb part 2

จาก XML เป็น Java

Page 13: Jaxb part 2

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>

Page 14: Jaxb part 2

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}

Page 15: Jaxb part 2

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());

Page 16: Jaxb part 2

Output Java