1. Trang chủ >
  2. Công Nghệ Thông Tin >
  3. Kỹ thuật lập trình >

12 Bảo đảm chỉ có thể chạy một thể hiện của ứng dụng tại một thời điểm

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (4.45 MB, 563 trang )


127

Chương 4: Tiểu trình, tiến trình, và sự đồng bộ

// có quyền sở hữu Mutex hay không.

bool ownsMutex;

// Tạo và lấy quyền sở hữu một Mutex có tên là MutexExample.

using (Mutex mutex =

new Mutex(true, "MutexExample", out ownsMutex)) {

// Nếu ứng dụng sở hữu Mutex, nó có thể tiếp tục thực thi;

// nếu không, ứng dụng sẽ thoát.

if (ownsMutex) {

Console.WriteLine("This application currently owns the" +

" mutex named MutexExample. Additional instances" +

" of this application will not run until you" +

" release the mutex by pressing Enter.");

Console.ReadLine();

// Giải phóng Mutex.

mutex.ReleaseMutex();

} else {

Console.WriteLine("Another instance of this" +

" application already owns the mutex named" +

" MutexExample. This instance of the" +

" application will terminate.");

}



}



// Nhấn Enter để kết thúc.

Console.WriteLine("Main method complete. Press Enter.");

Console.ReadLine();

}



}



128



Chương 5: XML



5



129



130

Chương 5: XML



M



ột trong những khía cạnh đáng chú ý nhất của Microsoft .NET Framework là sự

tích hợp sâu sắc với XML. Trong nhiều ứng dụng .NET, bạn sẽ không nhận thấy

rằng mình đang sử dụng các kỹ thuật XML—chúng sẽ được sử dụng phía hậu

trường khi bạn tuần tự hóa một Microsoft ADO.NET DataSet, gọi một dịch vụ Web XML,

hoặc đọc các thiết lập ứng dụng trong một file cấu hình Web.config. Trong các trường hợp

khác, bạn sẽ muốn làm việc trực tiếp với không gian tên System.Xml để thao tác dữ liệu XML.

Các tác vụ XML thông thường không chỉ phân tích một file XML mà còn xác nhận tính hợp lệ

của nó dựa trên một XML Schema, áp dụng phép biến đổi XSL để tạo một tài liệu hay trang

HTML mới, và tìm kiếm một cách thông minh với XPath. Các mục trong chương này trình

bày các vấn đề sau:







Các kỹ thuật dùng để đọc, phân tích, và thao tác dữ liệu XML (mục 5.1, 5.2,

5.3, và 5.7).







Duyệt một tài liệu XML để tìm các nút cụ thể theo tên (mục 5.4), theo không

gian tên (mục 5.5), hay theo biểu thức XPath (mục 5.6).







Xác nhận tính hợp lệ của một tài liệu XML dựa trên một XML Schema (mục



5.8).







Tuần tự hóa một đối tượng thành XML (mục 5.9), tạo XML Schema cho một

lớp (mục 5.10), và tạo mã nguồn cho lớp dựa trên một XML Schema (mục 5.11).







Biến đổi một tài liệu XML thành một tài liệu khác bằng XSLT stylesheet

(mục 5.12).



1



Hiển thị cấu trúc của một tài liệu XML

trong TreeView







Bạn cần hiển thị cấu trúc và nội dung của một tài liệu XML trong một ứng dụng

dựa-trên-Windows.







Nạp tài liệu XML bằng lớp System.Xml.XmlDocument. Sau đó, viết một phương thức

để chuyển một XmlNode thành một System.Windows.Forms.TreeNode, rồi gọi nó một

cách đệ quy để duyệt qua toàn bộ tài liệu.



.NET Framework cung cấp nhiều cách khác nhau để xử lý các tài liệu XML. Cách mà bạn sử

dụng tùy thuộc vào tác vụ cần lập trình. Một trong số đó là lớp XmlDocument. Lớp này cung

cấp một dạng biểu diễn trong-bộ-nhớ cho một tài liệu XML, tuân theo W3C Document Object

Model (DOM); cho phép bạn duyệt qua các nút theo bất kỳ hướng nào, chèn và loại bỏ nút, và

thay đổi động cấu trúc lúc chạy. Bạn hãy vào [http://www.w3c.org] để biết thêm chi tiết về

DOM.

Để sử dụng lớp XmlDocument, bạn chỉ việc tạo một thể hiện của lớp này rồi gọi phương thức

Load cùng với một tên file, một Stream, một TextReader, hay một XmlReader (bạn cũng có thể

cung cấp một URL chỉ đến một tài liệu XML). Thể hiện XmlDocument sẽ chứa tất cả các nút

(dạng cây) có trong tài liệu nguồn. Điểm nhập (entry point) dùng để truy xuất các nút này là

phần tử gốc, được cấp thông qua thuộc tính XmlDocument.DocumentElement. Đây là một đối

tượng XmlElement, có thể chứa nhiều đối tượng XmlNode lồng bên trong, các đối tượng này có



131

Chương 5: XML



thể chứa nhiều đối tượng XmlNode nữa, và cứ tiếp tục như thế. Một XmlNode là phần cấu thành

cơ bản của một file XML. Một nút XML có thể là một phần tử (element), một đặc tính

(attribute), lời chú thích, hay text.

Khi làm việc với XmlNode hay một lớp dẫn xuất từ đó (như XmlElement hay XmlAttribute),

bạn có thể sử dụng các thuộc tính cơ bản sau đây:

• ChildNodes là tập hợp các nút lồng bên trong ở mức đầu tiên.

• Name là tên của nút.

• NodeType là một thành viên thuộc kiểu liệt kê System.Xml.XmlNodeType, cho biết kiểu

của nút (phần tử, đặc tính, text...).

• Value là nội dung của nút, nếu đó là nút text hay nút CDATA.

• Attributes là tập hợp các nút mô tả các đặc tính được áp dụng cho phần tử.

• InnerText là chuỗi chứa giá trị (text) của nút hiện hành và tất cả các nút lồng bên

trong.

• InnerXml là chuỗi chứa thẻ đánh dấu XML cho tất cả các nút lồng bên trong.

• OuterXml là chuỗi chứa thẻ đánh dấu XML cho nút hiện hành và tất cả các nút lồng

bên trong.

Ví dụ dưới đây duyệt qua tất cả các nút của một XmlDocument (bằng thuộc tính ChildNodes và

một phương thức đệ quy) rồi hiển thị chúng trong một TreeView.

using System;

using System.Windows.Forms;

using System.Xml;

public class XmlTreeDisplay : System.Windows.Forms.Form{

private System.Windows.Forms.Button cmdLoad;

private System.Windows.Forms.Label lblFile;

private System.Windows.Forms.TextBox txtXmlFile;

private System.Windows.Forms.TreeView treeXml;

// (Bỏ qua phần mã designer.)

private void cmdLoad_Click(object sender, System.EventArgs e) {

// Xóa cây.

treeXml.Nodes.Clear();

// Nạp tài liệu XML.

XmlDocument doc = new XmlDocument();

try {

doc.Load(txtXmlFile.Text);

}catch (Exception err) {



}



MessageBox.Show(err.Message);

return;



// Đổ dữ liệu vào TreeView.

ConvertXmlNodeToTreeNode(doc, treeXml.Nodes);

// Mở rộng tất cả các nút.

treeXml.Nodes[0].ExpandAll();

}



Xem Thêm
Tải bản đầy đủ (.doc) (563 trang)

×