Thứ Ba, 5 tháng 8, 2014

Compare SAXParser & XMLReader

SAXParser: 
Sử dụng mô hình đẩy.
- Các phương thức parser của SAXParser chỉ ủy thác cho một XMLReader nội bộ và thuận tiện hơn.
- SAXParser quét file Xml từ trên xuống,nên không tốn nhiều bộ nhớ ,áp dụng được với những file XML có dung lượng lớn.
- Code ít hơn XmlReader.

XmlReader:
- Sử dụng mô hình kéo.
Với XMLReader, chúng ta phải tạo ra một vòng lặp để gọi phương thức đọc của lớp XMLReader. Sau đó chúng ta phải thực hiện một công trình chuyển đổi mà gửi các xử lý thủ tục khác tùy thuộc vào loại nút.
- Nhiều code hơn SAXParser.


Nhận xét:

- Ta sử dụng SAXParser hay XMLReader tùy thuộc vào các trường hợp khác nhau, một số trường hợp nâng cao ta phải sử dụng XMLReader như:
+ Thiết lập tính năng không đạt tiêu chuẩn để thực hiện.
+ Thiết lập các lớp khác nhau như ContentHandler, EntityResolver hoặc ErrorHandler.
+ Chuyển đổi xử lý trong khi phân tích cú pháp.

- Ta có thể gọi các method của XMLReader để kéo dữ liệu,nó giúp kiểm soát nhiều và thực hiện công việc dễ dàng hơn so với mô hình SAXParser.

Thứ Sáu, 1 tháng 8, 2014

Validate XML using validator and ErrorHandler

Demo 1:
 Create an application, which demonstrates the generation of an error during parsing an XML document. Write the code for handling different types of errors and exceptions. Define an endDocument() method to override the contentHandler. Declare a method to override the error method of errorhandler.
Bước 1: Tạo Java Application như các Demo bài trước.
Bước 2: Tạo file tomcat-users.xml

Bước 3: Tạo file HandlerReader.java

Bước 4: Xử lý code trong file chạy chương trình.

Demo chương trình.
Demo các bạn có thể tải tại đây.

Demo 2:
Create an application, which demonstrates the implementations of DTDHandler interface methods. As the DefaultHandler implements the DTDHandler interface, you need to override the desired methods of DTDHandler interface.
Bước 1: Tạo Java Application như các Demo trước.
Bước 2: Tạo file test.xml

Bước 3: Tạo file TagDTDHandler.java
 
Bước 4: Xử lí code trong file chạy chương trình.

Demo chương trình
Các bạn có thể tải Demo tại đây.

Demo 3:
 Create an XML file Report.xml that contains the sales data for this financial year. Create an application that demonstrates the implementations of LexicalHandler interface methods .The application should display the number of entities, CDATA, and comments in the Report.xml document.
Bước 1: Tạo Java Application như các Demo trước.
Bước 2: Tạo file test.xml

Xử lí code trong file chạy chương trình.

Các phương thức Override.

Demo chương trình.
Các bạn có thể tải Demo tại đây.
Nhận xét:
- Các lớp Override trong DefaultHandler giúp SAX kiểm soát lỗi dữ liệu tốt hơn
- Ứng dụng được kiểm soát và an toàn hơn.
- Việc xây dựng ứng dụng sẽ trở nên đơn giản và tối ưu hơn.

Apply filter in reading xml

Đề bài:
Create an application to get only name of employees of department 24 that has status contact(using xml file in sample)
Demo:
Bước 1: Tạo ứng dụng Java Application.
Bước 2: Tạo file employees.xml

Bước 3: Tạo DataFilter.java

Bước 4: Tạo DataProcessor.java

Bước 5: Xử lí Code trong file chạy chương trình ApplyFilter.java

Demo Chương trình.
Nhận xét:
- Sau khi làm Demo ta thấy trong Filter ta có thể thay đổi nguồn dữ liệu XML trước khi đến xử lí ở Handler mà không cần thay đổi dữ liệu nguồn trong file XML.
- Sử dụng Filter có ích cho việc kiểm soát dữ liệu trở nên dễ dàng và thuận tiện hơn.
- Chương trình chạy nhanh hơn vì ta đã tránh được việc đọc một lượng dữ liệu lớn.
- Ít lỗi xảy ra
Các bạn có thể tải Demo tại đây.

Describe Validate XML, DTD Handler, Lexical Event, EntityResolver, Filter

I.Handling Errors

1.Non validating parser 
- Khi chúng ta làm việc parsers không phải được config để validate dữ liệu,validate sẽ xem file xml đó được check đúng jay sai.
- Khi ta gặp lỗi trong quá trình quét dữ liệu,nếu lỗi này nghiêm trọng thì nó sẽ tung ra exception,còn nếu không thì nó sẽ dùng Defaul Error để generate ra một exception trong trace.

Non validating parser

2. Validating parser
- Khi chúng ta dùng parsers được config để validate dữ liệu thì chúng ta vẫn làm những bước như bình thường,ta phải tạo ra parser,khác biệt so với Non validating parser là chúng ta set mode cho validation có report error,và set XML Schema. Muốn xử lý lỗi ta phải create va register ErrorHandler vào parser tức là ta implement ErrorHandler.Trong quá trình quét dữ liệu thì ErrorHandler sẽ xử lý.


Validating parser 

II. DTD Handler



- DTD Handler là một interface để nhận thông báo của các sự kiện liên quan đến DTD.Nếu ứng dụng SAX
cần thông tin về notation và unparsed entities thì ứng dụng sẽ implement và đăng ký một thể hiện với SAX parser sử dụng các phương thức setDTDHandler của parser.Parser sử dụng các thể hiện đó để thông báo các notations và unparsed entities cho ứng dụng.
- Ta phải overview 2 phương thức sau:




III.Lexical Handler

- Lexical Handler dùng để xác định các comments,phần CDATA,và những thứ liên quan đến các parser entities.
- Các phương thức :


IV.Entity Resolver


- Một ứng dụng SAX cần thực hiện xử lý tùy biến cho các entities bên ngoài, nó phải implement interface này và đăng ký một thể hiện với SAX driver bằng cách sử dụng phương pháp  setEntityResolver. 

Phương thức resolveEntity() cho phép giải quyết các external entity ( có reference đến file bên ngoài).




V. Filter
- Là SAX interface đóng vai trò là 2 stream cơ bản:   -  1 là sự kiện  từ  SAX driver (thường là một XMLReader) cho các ứng dụng;

- 2 là request  từ các ứng dụng tới SAX driver.
- Khi muốn xử lý 1 file xml ở handler, nhưng không muốn đọc tất cả dữ liệu ở file xml, thì ở giữa xml và handler chúng ta có thể chèn vào nhiều filter khác nhau.


VI.Nhận xét:
- Các advance of SAX giúp cho việc kiểm soát lỗi tốt hơn.
- Việc xây dựng ứng dụng đơn giản hơn và khá dễ sử dụng.

- Các công cụ đều khá mạnh mẽ.
- Nhanh chóng kiểm tra dạng mà bạn mong đợi vào và loại bỏ bất kỳ dữ liệu nào khác gần giống trong quá trình xử lý.

Thứ Hai, 28 tháng 7, 2014

Use SAX to read XML file

Demo 1:
Create a program to accept the tomcat-users.xml file as a command line parameter and count the number of users defined in this configuration file. At the end of processing, it requires to print the number of users on the console.
Bài làm:
Bước 1: Tạo Project chúng ta chọn Java Application.
Bước 2: Tạo tomcat-user.xml

Bước 3: Tạo TagCouter.java

Bước 4: Viết code cho file chạy ứng dụng.

Demo chương trình.
Các bạn có thể tải Demo tại đây.

Demo 2:
Create the student.xml file that stores a list of registered students. Write a program for printing the name and ID of all registered students provided in student.xml. Make necessary arrangements to accept a command line parameter from the user to specify the name of the XML document that holds the list of registered students.
Bài làm:
Bước 1: Chúng ta cũng tạo Project giống như Demo 1.
Bước 2: Tạo file student.xml

Bước 3: Tạo file Student.java

Bước 4: Viết code cho file chạy ứng dụng.
Demo chương trình.
Các bạn có thể tải Demo tại đây.

Demo 3:
Write a program which demonstrates the use of SAX parser for a simple search in XML document. The program searches a specified user in the tomcat-users.xml file and prints an the role of the given user on search completion. This program should include two command-line parameters. The first parameter specifies the tomcat-users.xml file and the second parameter specifies the user name to search in the configuration file.
Bài làm:
Bước 1: Chúng ta tạo Project giống như Demo 1 và Demo 2.
Bước 2: Tạo file user.xml

Bước 3: Tạo file User.java

Bước 4: Xử lí Code trong file chạy chương trình.

Demo chương trình.
Các bạn có thể tải Demo tại đây.

Qua các bài Demo ta có thể nhận thấy dùng SAX khá đơn giản và dùng ít bộ nhớ nên tốc độ xử lý nhanh,khá dễ sử dụng để lọc dữ liệu nhưng qua đó ta cũng có thể thấy một số nhược điểm của nó như là không thể tác động lên dữ liệu XML và chế độ lưu trữ trạng thái phức tạp.Một điều nữa là sẽ khó khăn khi phân tích cấu trúc XML lớn.Nên ta chỉ dùng cho các ứng dụng đơn giản.


Describe overview of JAXP

1.Parsing XML



 -
Khái niệm : XML parser là chương trình giúp lấy dữ liệu, điều khiển dữ liệu.(đọc, xóa, sửa).
 - Đặc điểm :
   + Không phụ thuộc vào ngôn ngữ.
   + Không phụ thuộc vào mã nguồn.
   + Tính linh hoạt cao.
   + Phù hợp với nhiều mục đích sủa dụng
 - Phân loại :
   + Object-based parser DOM (Document Object Model).
   + Event-based parser SAX (Simple API for XML).

   + StAX (Streaming API for XML)
 - So sánh:
So sánh DOM và SAX,StAX

2.JAXP

JAXP
- JAXP không những dùng để chuyển đổi dữ liệu giữa client và server mà còn được dùng rất nhiều việc khác như chuyển đổi dữ liệu dưới dạng XML.      
- Các bộ thư viện có trong SAX được chia thành 5 nhóm:
   + Interfaces làm việc với Parser
   + Interfaces làm việc trng ứng dụng.
   + Các lớp chuẩn của SAX.
   + Các lớp  giúp đỡ.
   + Các lớp java.
- Packages.
Packages của JAXP

3.XSLT



- XSLT(The XML stylesheet language for Tranformations) là ngôn ngữ tập tin định dạng XML dành cho việc chuyển đổi cho phép biến đổi một bản tài liệu sang các dạng thức dữ liệu khác.
-XSL (eXtensible Stylesheet Language) gồm 2 thành phần:
+XSL-T (Transform): chủ yếu được dùng để chuyển đổi cấu trúc văn bản XML.
XSL-T(Transform)

+XSL-FO (Formating Object) dùng để định dạng văn bản XML.
XSL-FO(Formationg Object)

4.Nhận xét

- XML là một chuẩn ngày càng được ứng dụng rộng rãi vì chúng ta cần một dạng dữ liệu chung không thể có nhiều loại.
XML có cấu trúc rất chặt chẽ. Nó được ví như một cơ sở dữ liệu thu nhỏ, không cần phải cấu hình.
- XML đóng vai trò khá quan trọng mặc dù không nhiều người chú ý đến nó.Từ bây giờ chúng ta sẽ sử dụng XML trong các ứng dụng của mình.