
Thao tác XML
Sử dụng DOM trong .NET – Phần 1
Document Object Model (DOM) thực thi trong .NET hỗ trợ các kĩ thuật
W3C DOM Level 1 và Core DOM Level 2. DOM được thực thi thông qua
lớp XmlNode, một lớp ảo mô tả một nút của tài liệu.
Ngoài ra còn có một lớp XmlNodeList là một danh sách có thứ tự các nút.
Đây là một danh sách sống, và bất kì thay đổi nào cũng sẽ cập nhật ngay vào
danh sách. XmlNodeList hỗ trợ truy cập chỉ mục và truy cập lặp. Còn có
một lớp ảo khác, XmlCharacterData, nó là lớp mở rộng của
XmlLinkedNode, và cung cấp các phương thức sử dụng văn bản cho các lớp
khác.
Các lớp XmlNode và XmlNodeList trang điểm cho thực thi DOM trong
.NET Framework. Đây là một danh sách các lớp cơ sở trong XmlNode:

Class Name Description
XmlLinkedNode Trả về nút trước và sau nút hiện tại. Thêm
các
thuộc tính NextSibling và PreviousSibling và
o
XmlNode.
XmlDocument Miêu tả toàn bộ tài li
ệu. Thực thi các đặc điểm kĩ
thuật DOM Level 1 và Level 2.
XmlDocumentFragment
Miêu tả mô hình cây thư mục của tài liệu.
XmlAttribute Một đối tượng thuộc tính của một đối tư
ợng
XmlElement.
XmlEntity Phân tách và tổ hợp các nút.
XmlNotation Chứa cách chú thích trong môt DTD hoặc sơ đồ.
Các lớp sau mở rộng XmlCharacterData:

Class Name Description
XmlCDataSection Một đối tượng mô tả một đoạn CData
section
của một tài liệu.
XmlComment Mô tả một đối tượng ghi chú XML.
XmlSignificantWhitespace
Mô t
ả một nút với khoảng trắng. Các nút chỉ
được tạo khi cờ PreserveWhiteSpace là true.
XmlWhitespace Miêu tả whitespace trong một thành ph
ần ghi
chú. Các nút đư
ợc tạo chỉ khi cờ
PreserveWhiteSpace là true.
XmlText Ghi chú dạng văn bản cảu một thành ph
ần hoặc
thuộc tính.
Cuối cùng, tập các lớp tiếp theo mở rộng lớp XmlLinkedNode:

Class Name Description
XmlDeclaration Miêu tả nút khai báo (<?xml version='1.0'...>)
XmlDocumentType Quan hệ dữ liệu với khai báo kiểu tài liệu
XmlElement Một đối tượng thành phần XML
XmlEntityReferenceNode
Mô tả một nút tham chiếu tồn tại
XmlProcessingInstruction
Chứa một cấu trúc xử lí XML
Như bạn thấy, .NET tạo sẽ một lớp phù hợp với bất kì kiểu XML nào mà bạn bắt gặp.
Bởi vậy, bạn sẵn có một bộ các công cụ mạnh mẽ và mềm dẻo. Chúng ta sẽ không đi vào
chi tiết các lớp, nhưng chúng ta sẽ dùng một số ví dụ. Sau đây là sơ đồ các lớp:
Sử dụng lớp XmlDocument
XmlDocument và lớp xuất phát XmlDataDocument (chúng ta sẽ xem xét sau
trong chương) là các lớp bạn sẽ dùng để miêu tả DOM trong .NET. Không
giống như XmlReader và XmlWriter, XmlDocument cho cung cấp cho bạn

khả năng đọc và viết như truy xuất ngẫu nhiên cây DOM . XmlDocument
tương tự như thực thi DOM trong MSXML. Nếu bạn đã từng lập trình với
MSXML bạn sẽ cảm thấy tiện lợi khi dùng XmlDocument.
Lấy một ví dụ về tạo một đối tượng XmlDocument, load một tài liệu từ đĩa,
và load các tiêu đề vào một listbox. Nó giống như mọt ví dự mà chúng ta đã
tạo trong phần XmlReader. Cái khác ở đây là chúng ta sẽ chọn các nút mà
chúng ta sẽ làm việc thay vì duyệt qua các nút trong tài liệu như đã từng làm.
Đây là mã. Hãy xem cách làm việc của nó và so sánh với ví dụ XmlReader
(file có thể tìm thấy trong thư mục DOMSample1):
private void button1_Click(object sender, System.EventArgs e)
{
// doc is declared at the module level
// change path to match your path structure
doc.Load("..\\..\\..\\books.xml");
// get only the nodes that we want
XmlNodeList nodeLst=doc.GetElementsByTagName("title");

