Võ Văn Hải's blog

Chỉ có một điều tuyệt đối đó là mọi thứ đều tương đối…

Dùng JAXB tools để chuyển đổi tài liệu XML thành java và ngược lại

JAXB với 2 tools xjc schemagen cho phép chúng ta chuyển đổi tài lệu từ xml sang java và ngược lại.

A>Cấu hình JAXB

Đầu tiên chúng ta pahi3 download  Java Web Services Developer Pack 2.0. Sau đó cài đặt gói này. Giả sử chúng ta cài vào C:\Sun\jwsdp-2.0\.

Tạo các biến môi trường sau:

JWSDP_HOME có giá trị là thư mục cài đặt jwsdp, ở đây là C:\Sun\jwsdp-2.0

JAXB_HOME có giá trị là thư mục cài đặt JAXB, ở đây là %JWSDP_HOME%\jaxb

OK, bây giờ ta có thể chạy các tools được rồi.

B>Phát triến 1 ví dụ minh họa

1>chuyển từ xsd sang java

a. Tạo thư mục jaxbdemo

b. tạo file xsd với tên customer.xsd trong thư mục jaxbdemo có nội dung sau

<?xml version=”1.0″?>
<xsd:schema xmlns:xsd=”http://www.w3.org/2001/XMLSchema”&gt;
<xsd:element name=”customer1″ type=”Customer”/>
<xsd:element name=”comment” type=”xsd:string”/>
<xsd:complexType name=”Customer”>
<xsd:sequence>
<xsd:element name=”customerid” type=”xsd:string”/>
<xsd:element name=”name” type=”xsd:string”/>
<xsd:element name=”address” type=”xsd:string”/>
<xsd:element name=”city” type=”xsd:string”/>
<xsd:element name=”phone” type=”xsd:positiveInteger”/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>

c. Mở của sổ command, di chuyển thư mục hiện hành đến jaxbdemo
Gõ lệnh sau: xjc customers.xsd

ta sẽ có kết quả

c:\jaxbdemo\xjc ustomers.xsd
parsing a schema…
compiling a schema…
generated\Customer.java
generated\ObjectFactory.java

Xem trong thư mục ta sẽ thấy được các file được sinh ra.

2> Chuyển từ java sang xsd

a>Tạo file Sinhvien.java trong thư mục jaxbdemo với nội dung sau

public class Sinhvien {

private String mssv;

private String hoten;

private String diachi;

private String lop;

private String email;

public String getMssv() {

return mssv;

}

public void setMssv(String mssv) {

this.mssv = mssv;

}

public String getHoten() {

return hoten;

}

public void setHoten(String hoten) {

this.hoten = hoten;

}

public String getDiachi() {

return diachi;

}

public void setDiachi(String diachi) {

this.diachi = diachi;

}

public String getLop() {

return lop;

}

public void setLop(String lop) {

this.lop = lop;

}

public String getEmail() {

return email;

}

public void setEmail(String email) {

this.email = email;

}

public Sinhvien(String mssv, String hoten, String diachi, String lop,

String email) {

super();

this.mssv = mssv;

this.hoten = hoten;

this.diachi = diachi;

this.lop = lop;

this.email = email;

}

public Sinhvien() {

super();

}

}

b.Mở của sổ command, di chuyển thư mục hiện hành đến jaxbdemo

c. Gõ lệnh schemagen Sinhvien.java

Kết quả màn hình DOS như sau

Note: Writing schema1.xsd

ta có thể mở file schema1.xsd để xem kết quả như sau

<?xml version=”1.0″ encoding=”UTF-8″ standalone=”yes”?>
<xs:schema version=”1.0″ xmlns:xs=”http://www.w3.org/2001/XMLSchema”&gt;

<xs:complexType name=”sinhvien”>
<xs:sequence>
<xs:element name=”diachi” type=”xs:string” minOccurs=”0″/>
<xs:element name=”email” type=”xs:string” minOccurs=”0″/>
<xs:element name=”hoten” type=”xs:string” minOccurs=”0″/>
<xs:element name=”lop” type=”xs:string” minOccurs=”0″/>
<xs:element name=”mssv” type=”xs:string” minOccurs=”0″/>
</xs:sequence>
</xs:complexType>
</xs:schema>

Bây giờ chúng ta có thể làm nhiều thứ từ các tools này.

Chúc các bạn thành công!

2 Responses to “Dùng JAXB tools để chuyển đổi tài liệu XML thành java và ngược lại”

  1. Phạm Hữu Huy said

    Bạn có thể chỉ mình cách cài JAXB dc ko?thanks

  2. Võ Văn Hải said

    JAXB có gì để cài? JDK có sẵn. Chú ý thư mục %JAVA_HOME%\bin có trong PATH chưa để chạy command-line của XJC và SCHEMAGEN.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: