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

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

19 225 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 19
Dung lượng 667,27 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 / 19 Lab 04 StAX and JAXB Mục tiêu - Sử dụng XMLStreamReader đọc nội dung XML - Sử dụng XMLStreamWriter ghi file XML - Sử dụng XMLEventReader

Trang 1

IT Research Department @BKAP 2015 Trang 1 / 19

Lab 04 StAX and JAXB Mục tiêu

- Sử dụng XMLStreamReader đọc nội dung XML

- Sử dụng XMLStreamWriter ghi file XML

- Sử dụng XMLEventReader ghi nội dung ra file XML

- Sử dụng JAXB Marshelling chuyển nội dung java object sang file XML

- Sử dụng JAXB UnMarsher lấy nội dung file XML vào java object

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

Bài 4.1

Sử dụng XMLStreamReader đọc nội dung file ccinfo.xml:

 ccinfo.xml

Trang 2

 Output:

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

 File  New Project  Java  Java Application

 Project Name: Đặt tên Project là StAX

Step 2: Tạo File ccinfo.xml

 Project  New  Other  XML  XML Document

 ccinfo.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

>

<! XML DATA FOR CREDIT CARD INFORMATION >

<PayInfo>

<Name>David McArthur</Name>

<CreditCardLimit="10,000"Currency="USD">

<Number>9921 5681 2521 8845</Number>

Trang 3

IT Research Department @BKAP 2015 Trang 3 / 19

<Issuer>CreditBank</Issuer>

<Expiration>06/10</Expiration>

</CreditCard>

</PayInfo>

Step 3: Tạo lớp BKXMLStreamReader để đọc và in nội dụng file ccinfo.xml

 BKXMLStreamReader.java

package stax;

import java.io.File;

import java.io.FileInputStream;

import javax.xml.stream.XMLInputFactory;

import javax.xml.stream.XMLStreamReader;

/**

*

* @author DELL

*/

publicclass BKXMLStreamReader {

publicstaticvoid StreamReader(File file) {

try {

//create XML Input Factory

XMLInputFactory inputFactory = XMLInputFactory.newInstance();

//create XML Stream Reader form XMLInputFactory and source file ccinfo.xml

XMLStreamReader streamReader = inputFactory.createXMLStreamReader(new FileInputStream(file)); //Returns type of event an integer

while (streamReader.hasNext()) {

int eventType = streamReader.getEventType();

//check value of each event type

switch (eventType) {

//Event - start Element

case 1:

System.out.println("Event Type - START_ELEMENT(1)");

System.out.println("Start Element Name - " + streamReader.getLocalName());

//Event - end Element

case 2:

System.out.println("Event Type - END_ELEMENT(2)");

System.out.println("End Element Name - " + streamReader.getLocalName());

break;

//Event - Processing Instruction

case 3:

System.out.println("Event Type – PROCESSING_INSTRUCTION(3)");

System.out.println("Processing Instruction Data - " + streamReader.getPIData());

break;

//Event - Character

case 4:

System.out.println("Event Type - CHARACTERS(4)");

System.out.println("Character Data - " + streamReader.getText());

break;

//Event - Comment

case 5:

System.out.println("Event Type - COMMENT(5)");

System.out.println("Comment Data - " + streamReader.getText());

Trang 4

break;

//Event - Space

case 6:

System.out.println("Event Type - SPACE(6)");

System.out.println("Space Info - " + streamReader.getText());

break;

//Event - Start Document

case 7:

System.out.println("Event Type - START_DOCUMENT(7)");

System.out.println("Character Encoding Scheme - " + streamReader.getCharacterEncodingScheme()); System.out.println("Version - " + streamReader.getVersion());

break;

}

streamReader.next();

}

int eventType = streamReader.getEventType();

//Event - End Document

if (eventType == 8) {

System.out.println("Event Type - END_DOCUMENT(8) - closing document");

streamReader.close();

}

} catch (Exception ex) {

ex.printStackTrace();

}

}

}

Step 4: Triển khai hàm main của ứng dụng

 StAX.java

package stax;

import java.io.File;

/**

*

* @author DELL

*/

publicclass StAX {

/**

* @param args the command line arguments

*/

publicstaticvoid main(String[] args) {

try {

//Reader

File file = new File("ccinfo.xml");

BKXMLStreamReader bSR = new BKXMLStreamReader();

bSR.StreamReader(file);

} catch (Exception e) {

e.printStackTrace();

}

}

}

Trang 5

IT Research Department @BKAP 2015 Trang 5 / 19

Step 5: Build and Run ứng dụng

Bài 4.2

Sử dụng XMLStreamWriter Interface để ghi dữ liệu ra file output.xml

Step 1: Tạo lớp BKXMLStreamWriter để ghi dữ liệu ra file xml

 BKXMLStreamWriter.java

Trang 6

package stax;

import java.io.File;

import java.io.FileWriter;

import javax.xml.stream.XMLOutputFactory;

import javax.xml.stream.XMLStreamWriter;

/**

*

* @author DELL

*/

publicclass BKXMLStreamWriter {

publicstaticvoid StreamWriter(File file) {

//create XML Output Factory

XMLOutputFactory factory = XMLOutputFactory.newInstance();

try {

//create XML Stream Writer form XMLOutputFactory and recorded file xml

XMLStreamWriter writer = factory.createXMLStreamWriter(new FileWriter(file));

//Start write Document,Element,Value of Element, Attribute

writer.writeStartDocument("1.0");

writer.writeStartElement("Employees");

writer.writeStartElement("employee");

writer.writeAttribute("id", "111");

writer.writeStartElement("firstName");

writer.writeCharacters("John");

writer.writeEndElement();

writer.writeStartElement("lasttName");

writer.writeCharacters("Peter");

writer.writeEndElement();

writer.writeStartElement("location");

writer.writeCharacters("London");

writer.writeEndElement();

writer.writeEndElement();

writer.writeEndDocument();

writer.flush();

writer.close();

} catch (Exception ex) {

ex.printStackTrace();

}

}

}

Step 2: Triển khai hàm main của ứng dụng

package stax;

import java.io.File;

/**

*

* @author DELL

*/

publicclass StAX {

/**

* @param args the command line arguments

*/

Trang 7

IT Research Department @BKAP 2015 Trang 7 / 19

publicstaticvoid main(String[] args) {

try {

//Reader

File file = new File("ccinfo.xml");

BKXMLStreamReader bSR = new BKXMLStreamReader();

// bSR.StreamReader(file);

//writer

File fileWriter = new File("output.xml");

BKXMLStreamWriter bSW = new BKXMLStreamWriter();

bSW.StreamWriter(fileWriter);

} catch (Exception e) {

e.printStackTrace();

}

}

}

Step 3: Build and Run ứng dụng

Bài 4.3

Sử dụng XMLEventReader và interator để phân tích và in ra nội dung file xml

Employees.xml

Trang 8

 Output

Step 1: Tạo lớp BKXMLEventReader để phân tích và in nội dung Employees.xml

package stax;

import java.io.Reader;

import java.util.Iterator;

import javax.xml.namespace.QName;

Trang 9

IT Research Department @BKAP 2015 Trang 9 / 19

import javax.xml.stream.XMLEventReader;

import javax.xml.stream.XMLInputFactory;

import javax.xml.stream.XMLStreamException;

import javax.xml.stream.events.Attribute;

import javax.xml.stream.events.Characters;

import javax.xml.stream.events.EndElement;

import javax.xml.stream.events.StartElement;

import javax.xml.stream.events.XMLEvent;

/**

*

* @author DELL

*/

publicclass BKXMLEventReader {

publicstaticvoid EventReader(Reader fileReader) {

//create XML Input Factory

XMLInputFactory factory = XMLInputFactory.newInstance();

try {

//create XML Event Reader form XMLInputFactory and Reader file

XMLEventReader reader = factory.createXMLEventReader(fileReader);

//loop EventReader

while (reader.hasNext()) {

//get XMLEvent

XMLEvent event = reader.nextEvent();

//Event is start element

if (event.isStartElement()) {

StartElement element = (StartElement) event;

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

Iterator iterator = element.getAttributes();

while (iterator.hasNext()) {

Attribute attribute = (Attribute) iterator.next();

QName name = attribute.getName();

String value = attribute.getValue();

System.out.println("Attribute name/value: " + name + "/" + value);

}

}

//Event is end element

if (event.isEndElement()) {

EndElement element = (EndElement) event;

System.out.println("End element:" + element.getName());

}

//Event is character

if (event.isCharacters()) {

Characters characters = (Characters) event;

System.out.println("Text: " + characters.getData());

}

}

} catch (XMLStreamException ex) {

ex.printStackTrace();

}

}

}

Trang 10

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

Step 2: Triển khai hàm main của ứng dụng

package stax;

import java.io.File;

import java.io.FileReader;

import java.io.Reader;

/**

*

* @author DELL

*/

publicclass StAX {

/**

* @param args the command line arguments

*/

publicstaticvoid main(String[] args) {

try {

//Reader

File file = new File("ccinfo.xml");

BKXMLStreamReader bSR = new BKXMLStreamReader();

// bSR.StreamReader(file);

//writer

File fileWriter = new File("output.xml");

BKXMLStreamWriter bSW = new BKXMLStreamWriter();

// bSW.StreamWriter(fileWriter);

//EventReader

Reader fileReader = new FileReader(new File("Employees.xml"));

BKXMLEventReader bER = new BKXMLEventReader();

bER.EventReader(fileReader);

} catch (Exception e) {

e.printStackTrace();

}

}

}

Step 3: Build and Run ứng dụng

Trang 11

IT Research Department @BKAP 2015 Trang 11 / 19

Bài 4.4

Sử dụng JAXB để chuyển java object thành file xml

Trang 12

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

 File  New Project  Java  Java Application

 Project Name: Đặt tên Project là JAXB

Step 2: Tạo java object JAXBEmployee được sử dụng để tạo ra file xml

 JAXBEmployee.java

package jaxb;

import javax.xml.bind.annotation.XmlAccessType;

import javax.xml.bind.annotation.XmlAccessorType;

import javax.xml.bind.annotation.XmlRootElement;

/**

*

* @author DELL

*/

@XmlRootElement(name="employee")

@XmlAccessorType(XmlAccessType.FIELD)

publicclass JAXBEmployee {

private Integer id;

private String firstName;

private String lastName;

privatedouble income;

public Integer getId() {

return id;

}

publicvoid setId(Integer id) {

this.id = id;

}

public String getFirstName() {

return firstName;

}

publicvoid setFirstName(String firstName) {

this.firstName = firstName;

}

public String getLastName() {

return lastName;

}

publicvoid setLastName(String lastName) {

this.lastName = lastName;

}

publicdouble getIncome() {

return income;

}

Trang 13

IT Research Department @BKAP 2015 Trang 13 / 19

publicvoid setIncome(double income) {

this.income = income;

}

}

Step 3: Tạo java object Map

 EmployeeMap.java

package jaxb;

import java.util.HashMap;

import java.util.Map;

import javax.xml.bind.annotation.XmlAccessType;

import javax.xml.bind.annotation.XmlAccessorType;

import javax.xml.bind.annotation.XmlRootElement;

/**

*

* @author DELL

*/

@XmlRootElement(name="employees")

@XmlAccessorType(XmlAccessType.FIELD)

publicclass EmployeeMap

{

private Map<Integer,JAXBEmployee> employeeMap = new HashMap<Integer, JAXBEmployee>();

public Map<Integer, JAXBEmployee> getEmployeeMap() {

return employeeMap;

}

publicvoid setEmployeeMap(Map<Integer, JAXBEmployee> employeeMap) {

this.employeeMap = employeeMap;

}

}

Step 4: Triển khai hàm main của ứng dụng để tạo file JAXBMarshalOutput.xml từ JAXBEmployee và EmployeeMap

package jaxb;

import java.io.File;

import java.util.HashMap;

import javax.xml.bind.JAXBContext;

import javax.xml.bind.JAXBException;

import javax.xml.bind.Marshaller;

/**

*

* @author DELL

*/

publicclass JAXB {

/**

Trang 14

* @param args the command line arguments

*/

publicstaticvoid main(String[] args) {

//create HashMap

HashMap<Integer, JAXBEmployee> map = new HashMap<Integer, JAXBEmployee>();

//create object JAXBEmployee emp1

JAXBEmployee emp1 = new JAXBEmployee();

//Set value to object emp1

emp1.setId(1);

emp1.setFirstName("Allen");

emp1.setLastName("Smith");

emp1.setIncome(100.0);

//create object JAXBEmployee emp2

JAXBEmployee emp2 = new JAXBEmployee();

//Set value to object emp2

emp2.setId(2);

emp2.setFirstName("John");

emp2.setLastName("Mclane");

emp2.setIncome(200.0);

map.put(1, emp1);

map.put(2, emp2);

//add employee in map

EmployeeMap employeeMap = new EmployeeMap();

employeeMap.setEmployeeMap(map);

try {

//create JAXB context and instantiate marshaller

JAXBContext jaxbContext = JAXBContext.newInstance(EmployeeMap.class);

Marshaller jaxbMarshaller = jaxbContext.createMarshaller();

jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);

//write to System.out

jaxbMarshaller.marshal(employeeMap, System.out);

//write to File JAXBMarshalOutput.xml

jaxbMarshaller.marshal(employeeMap, new File("JAXBMarshalOutput.xml"));

} catch (JAXBException ex) {

ex.printStackTrace();

}

}

}

Step 5: Build and Run ứng dụng

Trang 15

IT Research Department @BKAP 2015 Trang 15 / 19

Trang 16

Bài 4.5

Sử dụng JAXB lấy dữ liệu từ file xml đẩy vào java object và in ra màn hình

 Employees.xml

 Output:

Trang 17

IT Research Department @BKAP 2015 Trang 17 / 19

Step 1: Tạo object Employee để lấy dữ liệu của element employee trong file xml

 Employee.java

package jaxb;

import javax.xml.bind.annotation.XmlAttribute;

import javax.xml.bind.annotation.XmlElement;

/**

*

* @author DELL

*/

publicclass Employee {

privateint id;

private String firstName;

private String lastName;

private String location;

public Employee(){}

public Employee(int id, String firstName, String lastName,String location){

super();

this.id = id;

this.firstName = firstName;

this.lastName = lastName;

this.location = location;

}

//getter and setter Attribute id

@XmlAttribute

publicint getId() {

return id;

}

publicvoid setId(int id) {

this.id = id;

}

//getter and setter element firstname

@XmlElement

public String getFirstName() {

return firstName;

}

publicvoid setFirstName(String firstName) {

this.firstName = firstName;

}

//getter and setter element lastname

@XmlElement

public String getLastName() {

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

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w