Như đã biết, mô hình DOM được biểu diễn dưới dạng cây cấu trúc dữ liệu được dùng để truy xuất các tài liệu dạng HTML và XML. DOM xem mọi thứ trong tài liệu XML là node, tổ chức thành cây phân cấp. DOM đặc tả file XML gồm các node sau:
• Toàn bộ tài liệu là một document node. • Mỗi phần tử XML là một element node. • Text trong các phần tử XML là text node. • Mỗi thuộc tính là một attribute node. • Chú thích là comment node.
Để generate file XML cần có 2 loại class:
• Class thuộc thư viện JAXP: Những class thuộc loại này bao gồm: Element, Document. Đây là các class dùng để định nghĩa các thành phần của ngôn ngữ XML. Thư viện JAXP sẽ được nói đến trong mục sau.
• Class thuộc thư viện Xerces2 Java: Những class thuộc loại này bao gồm: OutputFormat, XMLSerializer. Đây là các class dùng để serialize ngôn ngữ XML thành tài liệu theo định dạng của Xerces2 Java quy định. Thay vì chúng ta có thể dùng
Chương 7. Chức năng nâng cao của Workflow Editor
output stream của Java để tạo ra file XML nhưng bố cục của file không gọn gàng như khi dùng Xerces2 Java.
Class Document:
void DocumentImpl(): phương thức khởi tạo dùng để tạo ra định dạng document tree và là đối tượng dùng để truy cập vào dữ liệu bên trong document đó.
Element createElement(name): phương thức này có trị trả về là một đối tượng Element, dùng để tạo ra phần tử thuộc document với tên là name(chỉ mới tạo ra, chưa được đưa vào document).
void appendChild(Element): dùng để đưa vào document đối tượng Element.
Class Element:
void setAttribute(name, value): thiết lập thuộc tính có tên name và giá trị value cho thuộc tính đó của đối tượng Element.
void appendChild(Element): dùng để đưa vào Element hiện tại các Element “con”.
Class OutputFormat:
void OutputFormat(org.w3c.dom.Document doc, java.lang.String encoding, boolean indenting): phương thức khởi tạo định dạng khi xuất ra file. Ở đây Document doc sẽ là “XML”, String encoding là “UTF-8” và indenting(thụt đầu dòng mỗi khi tạo Element mới) là true.
Class XMLSerializer:
void XMLSerializer(FileOutputStream, OutputFormat): khởi tạo một serializer ghi dữ liệu được định dạng bởi output format ra đĩa dùng luồng xuất output stream.
void asDOMSerializer(): thiết lập một DOMSerializer interface cho đối tượng XMLSerializer. void serialize(org.w3c.dom.Document doc): dùng để serializer một document theo mô hình DOM.
Sau khi đã serializer một tài liệu mô hình DOM, chúng ta đã tạo được file XML theo mô hình DOM.
Chương 7. Chức năng nâng cao của Workflow Editor
Hình 7.7: Sơ đồ tuần tự các hoạt động khi tạo file XML
Chương 7. Chức năng nâng cao của Workflow Editor
Document xmldoc= new DocumentImpl(); //tạo tài liệu xmldoc Element root = xmldoc.createElement("WorkFlow");
//tạo Element root tượng trưng cho Element Workflow root.setAttribute("property", giá trị của property); //thiết lập thuộc tính property cho Element Workflow Element place = xmldoc.createElement("Place");
//tạo Element place tượng trưng cho Element Place place.setAttribute("name", giá trị của name); place.setAttribute("algorithm", "edaHC"); //thiết lập các thuộc tính cho place root.appendChild(place);
//thêm Element place vào Element root xmldoc.appendChild(root);
//thêm Element root vào Element xmldoc
FileOutputStream fos = new FileOutputStream(path); //khởi tạo output stream với đường dẫn là path
OutputFormat of = new OutputFormat("XML","UTF-8",true); //khởi tạo định dạng
XMLSerializer serializer = new XMLSerializer(fos,of);
/*khởi tạo một serializer với output stream và định dạng được chỉ định trước*/
serializer.asDOMSerializer();
serializer.serialize(xmldoc.getDocumentElement()); //các phương thức này dùng để generate ra file XML