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

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

22 293 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 22
Dung lượng 756,37 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 / 22 Lab 02 Document Object Model Mục tiêu - Chỉ rõ các kiểu Node - Cách lấy giá trị của các Node trong file XML - Cách tạo các Node và giá tr

Trang 1

IT Research Department @BKAP 2015 Trang 1 / 22

Lab 02 Document Object Model Mục tiêu

- Chỉ rõ các kiểu Node

- Cách lấy giá trị của các Node trong file XML

- Cách tạo các Node và giá trị các Node

- Cách cập nhật giá trị Node và giá trị Attribute

- Cách xóa Node

- Sử dụng ErrorHandler trong DOM

Phần I Bài tập step by step

Bài 2.1

In các kiểu Node có trong file Employees.xml bằng DOM:

Trang 2

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

 File  New Project  Java  Java Application

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

Step 2: Tạo file Employees.xml

 Project  New XML  XML Document

 Employees.xml

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

<!

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

>

<!DOCTYPE employees [

<!ELEMENT employees (employee)*>

<!ELEMENT employee (firstname, lastname, location, gender)>

<!ELEMENT firstname (#PCDATA)>

<!ELEMENT lastname (#PCDATA)>

<!ELEMENT location (#PCDATA)>

<!ELEMENT gender (#PCDATA)>

]>

<employees>

<employeeid="111">

<firstname>Allen</firstname>

<lastname>Smith</lastname>

<location>Alaska</location>

<gender>M</gender>

</employee>

<employeeid="112">

<firstname>John</firstname>

<lastname>Davis</lastname>

<location>California</location>

<gender>M</gender>

</employee>

<employeeid="113">

<firstname>Bob</firstname>

<lastname>Thomson</lastname>

<location>Kansas</location>

Trang 3

IT Research Department @BKAP 2015 Trang 3 / 22

publicclass NodeTypes {

publicstaticvoid printNodes(Document n) {

printElement((Node) n, " ");

}

publicstaticvoid printElement(Node n, String indent) {

int type = n.getNodeType();

Trang 4

//Lấy danh sách các Node cho Node cha

NodeList list = n.getChildNodes();

Element item = null;

for (int i = 0; i < list.getLength(); i++) {

Trang 5

IT Research Department @BKAP 2015 Trang 5 / 22

//Khởi tạo file, trỏ vào file cần phân tích

File fXmlFile = new File("Employees.xml");

//Khởi tạo Factory

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); //Khởi tạo DOM Builder

DocumentBuilder builder = factory.newDocumentBuilder();

//Đẩy nội dung vào Document

Document doc = builder.parse(fXmlFile);

//In các kiểu của Node, gọi method printNodes của lớp NodeTypes

NodeTypes node = new NodeTypes();

Trang 6

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

Bài 2.2

Sử dụng các method của Node Interface để in giá trị của Element Node

“firstname” của các Element Node “employee” trong file Employees.xml (trong project bài 2.1)

Step 1: Tạo lớp SeekingNodes.java để in các giá trị của Element Node

“firstname”

 Domexample  New  Other  Java Java Class

 SeekingNodes.java

package domexample;

Trang 7

IT Research Department @BKAP 2015 Trang 7 / 22

publicclass SeekingNodes {

publicstaticvoid printNodeValue(Document doc){

//Lấy danh sách các Element Node “employee”

NodeList listemp = doc.getElementsByTagName("employee");

Element emp = null;

//Duyệt từng node employee

for (int i = 0; i < listemp.getLength(); i++) {

emp = (Element) listemp.item(i);

//Lấy giá trị node firstname trong mỗi node employee

Trang 8

//Khởi tạo file, trỏ vào file cần phân tích

File fXmlFile = new File("Employees.xml");

//Khởi tạo Factory

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); //Khởi tạo DOM Builder

DocumentBuilder builder = factory.newDocumentBuilder();

//Đẩy nội dung vào Document

Document doc = builder.parse(fXmlFile);

//In các kiểu của Node, gọi method printNodes của lớp NodeTypes

NodeTypes node = new NodeTypes();

node.printNodes(doc);

//In giá trị các Node firstname

SeekingNodes node = new SeekingNodes ();

 Project sau khi hoàn thành

Step 3: Build and Run ứng dụng

Trang 9

IT Research Department @BKAP 2015 Trang 9 / 22

Bài 2.3

 Tạo mới các node trong file Employees.xml

 Cập nhật node trong file Employees.xml: viết hoa giá trị của các node

firstname

 Cập nhật giá trị Attribute của Element employee trong file Employees.xml

với điều kiện: Nếu gender là M thì ID = “M…”, nếu là F thì ID = “F…”

Trang 10

 Xóa Node trong file Employees.xml: Xóa node location trong element

employee đầu tiên

Trang 11

IT Research Department @BKAP 2015 Trang 11 / 22

Phần 1: Tạo mới các node trong file Employees.xml

Step 1: Tạo lớp ControlNodes.java

 domexample  New  Other  Java Java Class

publicclass ControlNodes {

publicstaticvoid CreateNode(Document doc) {

//Get Element

Element element = doc.getDocumentElement();

//Create node employee

Node node = doc.createElement("employee");

//Create child node employee: firstname

Node nodefn = node.appendChild(doc.createElement("firstname")); Text textfn = doc.createTextNode("Michelle");

nodefn.appendChild(textfn);

//Create child node employee: lastname

Node nodeln = node.appendChild(doc.createElement("lastname")); Text textln = doc.createTextNode("Sawyer");

nodeln.appendChild(textln);

Trang 12

//Create child node employee: location

Node nodel = node.appendChild(doc.createElement("location"));

Text textlocation = doc.createTextNode("Kannas");

nodel.appendChild(textlocation);

//Create child node employee: gender

Node nodeg = node.appendChild(doc.createElement("gender"));

Text textgender = doc.createTextNode("F");

// create DOMSource for source XML document

Source xmlSource = new DOMSource(doc);

// create StreamResult for transformation result

Result result = new StreamResult(new

FileOutputStream("Employees.xml"));

// create TransformerFactory

TransformerFactory transformerFactory =

TransformerFactory.newInstance();

// create Transformer for transformation

Transformer transformer = transformerFactory.newTransformer();

// transform and deliver content to client

Trang 13

IT Research Department @BKAP 2015 Trang 13 / 22

File fXmlFile = new File("Employees.xml");

//Get the DOM Builder Factory

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setValidating(false);

//Get the DOM Builder

DocumentBuilder builder = factory.newDocumentBuilder();

Document doc = builder.parse(fXmlFile);

// NodeTypes node = new NodeTypes();

Trang 14

Step 3: Build and Run ứng dụng

Phần 2: Cập nhật Node

Step 1: Xây dựng thêm method UpdateElementValue trong ControlNodes.java

 ControlNodes.java

publicstaticvoid UpdateElementValue(Document doc){

NodeList listemp = doc.getElementsByTagName("employee");

Element emp = null;

//loop for each employee

for (int i = 0; i < listemp.getLength(); i++) {

emp = (Element) listemp.item(i);

Step 2: Từ main gọi thực hiện method UpdateElementValue

publicstaticvoid main(String[] args) {

try {

File fXmlFile = new File("Employees.xml");

//Get the DOM Builder Factory

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

Trang 15

IT Research Department @BKAP 2015 Trang 15 / 22

factory.setValidating(false);

//Get the DOM Builder

DocumentBuilder builder = factory.newDocumentBuilder();

Document doc = builder.parse(fXmlFile);

// NodeTypes node = new NodeTypes();

Trang 16

 ControlNodes.java

publicstaticvoid UpdateAttributeValue(Document doc){

NodeList listemp = doc.getElementsByTagName("employee");

Element emp = null;

//loop for each employee

for (int i = 0; i < listemp.getLength(); i++) {

emp = (Element) listemp.item(i);

String gender =

emp.getElementsByTagName("gender").item(0).getFirstChild().getNodeValue();

if (gender.equalsIgnoreCase("M")) {

//prefix id attribute with M

emp.setAttribute("id", "M"+emp.getAttribute("id"));

} else {

//prefix id attribute with F

emp.setAttribute("id", "F"+emp.getAttribute("id"));

}

}

SaveXMLDocument(doc);

}

Step 2: Gọi method UpdateAttributeValue từ hàm main

publicstaticvoid main(String[] args) {

try {

File fXmlFile = new File("Employees.xml");

//Get the DOM Builder Factory

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setValidating(false);

//Get the DOM Builder

DocumentBuilder builder = factory.newDocumentBuilder();

Document doc = builder.parse(fXmlFile);

// NodeTypes node = new NodeTypes();

Trang 17

IT Research Department @BKAP 2015 Trang 17 / 22

publicstaticvoid RemoveNodeFormDOMDocumnet(Document doc){

//retrieve the element location for the first employee

Element element = (Element)

doc.getElementsByTagName("location").item(0);

//Remove the specific node

Trang 18

}

Step 2: Triển khai gọi methode RemoveNodeFromDOMDocument từ hàm main

publicstaticvoid main(String[] args) {

try {

File fXmlFile = new File("Employees.xml");

//Get the DOM Builder Factory

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setValidating(false);

//Get the DOM Builder

DocumentBuilder builder = factory.newDocumentBuilder();

Document doc = builder.parse(fXmlFile);

// NodeTypes node = new NodeTypes();

Trang 19

IT Research Department @BKAP 2015 Trang 19 / 22

Bài 2.4 Xây dựng lớp Handling Errors trong ứng dụng DOM: Bắt lỗi sai cấu trúc file Employees.xml trong ứng dụng DOM

Step 1: Xây dựng lớp DOMErrorHandler.java implements ErrorHandler

Trang 20

 Cấu trúc Project sau khi hoàn thành

Step 2: Set ErrorHandler cho DocumentBuilder tại hàm main

publicstaticvoid main(String[] args) {

try {

File fXmlFile = new File("Employees.xml");

//Get the DOM Builder Factory

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setValidating(false);

//Get the DOM Builder

DocumentBuilder builder = factory.newDocumentBuilder();

//Set ErrorHandler to DocumentBuilder

builder.setErrorHandler(new DOMErrorHandler());

Document doc = builder.parse(fXmlFile);

// NodeTypes node = new NodeTypes();

Trang 21

IT Research Department @BKAP 2015 Trang 21 / 22

Trang 22

 In các kiểu node được sử dụng

 In giá trị các node tenHang, nhaSX

 Tạo mới Node:

 Cập nhật giá trị node nhaSX thành chữ in hoa, cập nhật giá trị Attribute của

Element hangHoa thành id = “H…”

 Xóa node tenHang của element hangHoa có ID = “H003”

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

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w