1. Trang chủ
  2. » Công Nghệ Thông Tin

Thực hành sử dụng XML trong Java Lab 1

24 244 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 24
Dung lượng 873,74 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

IT Research Department @BKAP 2015 Trang 1 / 24 Lab 01 Introduction to JAXP Simple API for XML SAX Mục tiêu - Sử dụng SAX duyệt file XML - Cách cài đặt Parser SAXParserFactory, SAXPars

Trang 1

IT Research Department @BKAP 2015 Trang 1 / 24

Lab 01

Introduction to JAXP Simple API for XML (SAX) Mục tiêu

- Sử dụng SAX duyệt file XML

- Cách cài đặt Parser (SAXParserFactory, SAXParser)

- Sử dụng Parsing Content bằng cách kế thừa ContentHandler, DefaultHandler

- Sử dụng XMLReader để đăng ký phân tích file XML

Trang 2

 Output: In ra màn hình theo SAX Parser

Step 1: Tạo project java mới trong netbean

 File  New Project  Java  Java Application

 Project Name: Đặt tên project là INTXML

 Sau khi tạo ta được Project có cấu trúc như sau:

Step 2: Tạo file Employees.xml

 Project  New XML  XML Document

Trang 3

IT Research Department @BKAP 2015 Trang 3 / 24

Trang 4

 File Employees.xml sau khi tạo thành

 Tạo nội dung cho Employees.xml

<?xml version="1.0" encoding="UTF-8"?>

<employees>

<employeeid="111">

<firstname>Allen</firstname>

<lastname>Smith</lastname>

<location>Alaska</location>

</employee>

<employeeid="112">

<firstname>John</firstname>

<lastname>Davis</lastname>

Trang 5

IT Research Department @BKAP 2015 Trang 5 / 24

<location>California</location>

</employee>

<employeeid="113">

<firstname>Bob</firstname>

<lastname>Thomson</lastname>

<location>Kansas</location>

</employee>

</employees>

Step 3: Tạo lớp xử lý nội dung XML – Content Handler

 Intxml  New  Java  Java Class

 SaxHandler.java

/*

* To change this license header, choose License Headers in Project Properties

* To change this template file, choose Tools | Templates

* and open the template in the editor

*/

package intxml;

Trang 6

publicvoid startDocument() throws SAXException {

System.out.println("Start document");

}

//End Document

@Override

publicvoid endDocument() throws SAXException {

System.out.println("End document");

System.out.println("Start element: "+qname);

//In attributes nếu element là employee

if (qname.equals("employee")) {

int atts = attributes.getLength();

for (int i = 0; i < atts; i++) {

String atrName = attributes.getQName(i);

String atrValue = attributes.getValue(i);

System.out.println("Attributes: "+atrName+" "+atrValue);

Trang 7

IT Research Department @BKAP 2015 Trang 7 / 24

Trang 8

 implements ContentHandler thì phải implement tất cả abstract methods

 extends DefaultHandler thì chỉ dùng các methods mình cần sử dụng

Step 4: Triển khai tại hàm main của chương trình

 INTXML.java

/*

* To change this license header, choose License Headers in Project Properties

* To change this template file, choose Tools | Templates

* and open the template in the editor

*/

package intxml;

Trang 9

IT Research Department @BKAP 2015 Trang 9 / 24

//Tạo SaxHandler xử lý nội dung

SaxHandler sax = new SaxHandler();

//Tạo SAX ParserFactory

SAXParserFactory parserFactory = SAXParserFactory.newInstance(); //Tạo SAX Parser trên Factory đã khai báo

SAXParser parser = parserFactory.newSAXParser();

//Khai báo 1 XML Reader dựa trên SAXParser object

XMLReader xmlReader = parser.getXMLReader();

//Xác định đối tượng chịu trách nhiệm xử lý nội dung XML

xmlReader.setContentHandler(sax);

//Tiến hành phân tích dữ liệu nguồn cung cấp bởi file XML

xmlReader.parse(new InputSource("Employees.xml"));

Trang 10

Step 5: Build và Run ứng dụng

Bài 1.2

Phát triển tiếp bài 1.1

 Sử dụng XML locator để chỉ ra vị trí current parser đang phân tích

 Sử dụng Instruc tions để đọc các chỉ thị của các chương trình khác có định dạng: <?target parameter(s)?>

 Thông báo lỗi khi file XML sai cấu trúc

Step 1: Sử dụng XML locator để chỉ ra vị trí current parser

 SaxHandler.java

Trang 11

IT Research Department @BKAP 2015 Trang 11 / 24

/*

* To change this license header, choose License Headers in Project Properties

* To change this template file, choose Tools | Templates

* and open the template in the editor

publicclass SaxHandler implements ContentHandler{

//Khai báo biến locator

private Locator locator;

publicvoid startDocument() throws SAXException {

System.out.println("Start document");

}

//End Document

@Override

publicvoid endDocument() throws SAXException {

System.out.println("End document");

System.out.println("Start element: "+qname);

//In location cua element dang duyet

if (locator!=null) {

Trang 12

System.out.println("LOCATOR XML-document name:

"+locator.getSystemId()+", column"+locator.getColumnNumber()+",

line"+locator.getLineNumber());

}

//In attributes nếu element là employee

if (qname.equals("employee")) {

int atts = attributes.getLength();

for (int i = 0; i < atts; i++) {

String atrName = attributes.getQName(i);

String atrValue = attributes.getValue(i);

System.out.println("Attributes: "+atrName+" "+atrValue);

Trang 13

IT Research Department @BKAP 2015 Trang 13 / 24

publicvoid setDocumentLocator(Locator locator) {

this.locator = locator;

Trang 14

<firstname>Allen</firstname>

<lastname>Smith</lastname>

<location>Alaska</location>

</employee>

Trang 15

IT Research Department @BKAP 2015 Trang 15 / 24

<employeeid="112">

<firstname>John</firstname>

<lastname>Davis</lastname>

<location>California</location>

</employee>

<employeeid="113">

<firstname>Bob</firstname>

<lastname>Thomson</lastname>

<location>Kansas</location>

Trang 16

Step 3: Thông báo lỗi khi file XML sai cấu trúc

 Tạo lớp ErrorHandler.java để xử lý các lỗi sai cấu trúc

IntxmlnewOtherJavaJava Classđặt tên ErrorHandler

/*

* To change this license header, choose License Headers in Project Properties

* To change this template file, choose Tools | Templates

* and open the template in the editor

publicvoid error(SAXParseException exception) throws SAXException {

showError("Error", exception);

Trang 17

IT Research Department @BKAP 2015 Trang 17 / 24

}

 Khai báo trong hàm Main của INTXML.java

/*

* To change this license header, choose License Headers in Project Properties

* To change this template file, choose Tools | Templates

* and open the template in the editor

//Tạo SaxHandler xử lý nội dung

SaxHandler sax = new SaxHandler();

//Tạo ErrorHandler thông báo lỗi

ErrorHandler err = new ErrorHandler();

//Tạo SAX ParserFactory

SAXParserFactory parserFactory = SAXParserFactory.newInstance(); //Tạo SAX Parser trên Factory đã khai báo

SAXParser parser = parserFactory.newSAXParser();

//Khai báo 1 XML Reader dựa trên SAXParser object

XMLReader xmlReader = parser.getXMLReader();

//Xác định đối tượng chịu trách nhiệm xử lý lỗi khi phân tích XML

xmlReader.setErrorHandler(err);

//Xác định đối tượng chịu trách nhiệm xử lý nội dung XML

Trang 18

xmlReader.setContentHandler(sax);

//Tiến hành phân tích dữ liệu nguồn cung cấp bởi file XML

xmlReader.parse(new InputSource("Employees.xml"));

<firstname>Allen</firstname>

<lastname>Smith</lastname>

<location>Alaska</location>

</employee>

<employeeid="112">

<firstname12>John</firstname>

<lastname>Davis</lastname>

<location>California</location>

</employee>

<employeeid="113">

<firstname>Bob</firstname>

<lastname>Thomson</lastname>

<location>Kansas</location>

</employee>

</employees>

 Build and Run ứng dụng

Trang 19

IT Research Department @BKAP 2015 Trang 19 / 24

Bài 1.3

Xây dựng ứng dụng SAX:

 Duyệt file Personnels.xml

 Xây dựng lớp Filter kế thừa interface XMLFilterImpl để thay đổi attributes

status = “donotcontact” đối với các element có deptid bằng 3

Step 1: Duyệt file Personnels.xml (làm theo các step như bài 1.1)

 SaxHandler.java kế thừa DefaultHandler

Trang 20

publicclass SAXHandler extends DefaultHandler {

@Override

publicvoid startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {

if (qName.equals("employee")) {

if (attributes.getValue("status").equals("contact")) {

System.out.println("Contacting employee "

SAXHandler sax = new SAXHandler();

SAXParserFactory parserFactory = SAXParserFactory.newInstance();

SAXParser parser = parserFactory.newSAXParser();

XMLReader xmlReader = parser.getXMLReader();

xmlReader.setContentHandler(sax);

xmlReader.parse(new InputSource("Personnels.xml"));

Trang 21

IT Research Department @BKAP 2015 Trang 21 / 24

 Build and Run ứng dụng

Step 2: Xây dựng lớp Filter

 Tạo lớp DataFilter.java kế thừa XMLFilterImpl

Trang 22

SAXHandler sax = new SAXHandler();

SAXParserFactory parserFactory = SAXParserFactory.newInstance(); SAXParser parser = parserFactory.newSAXParser();

XMLReader xmlReader = parser.getXMLReader();

Trang 23

IT Research Department @BKAP 2015 Trang 23 / 24

 Build and Run ứng dụng

PHẦN 2: BÀI TẬP TỰ LÀM

Viết 1 chương trình sử dụng SAX để phân tích một cấu trúc XML có dạng như sau:

In ra màn hình:

 Nội dung file xml

 Đầy đủ nội dung file xml với cấu trúc file theo SAX

 Sử dụng kế thừa theo ContentHandler hoặc DefaultHandler

 Vị trí các element đang in

Trang 24

 Validate thông báo lỗi khi có lỗi cấu trúc XML

 Filter chỉ in ra các hàng hóa có giá bán từ 400USD đến 600USD

Ngày đăng: 07/05/2018, 16:13

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w