Cấp bậc tác giả:

DOTNET

Xử lý XML trong lập trình C# .NET - Phần IV

Được viết bởi QuangIT ngày 20/09/2012 lúc 02:59 PM
Lớp XmlDocument có phương thức SelectNodes() mà chấp nhận 1 chuỗi chứa câu truy vấn để tìm lọc ra những nút mà bạn muốn, nó sẽ trả về đối tượng XmlNodeList chứa danh sách tất cả các nút thỏa mãn điều kiện truy tìm.
  • 0
  • 11443

Xử lý XML trong lập trình C# .NET - Phần IV

KỲ 4

CHỌN NHIỀU NÚT BẤT KỲ BẰNG CÁCH SỬ DỤNG PHƯƠNG THỨC SelectNodes()

Lớp XmlDocument có phương thức SelectNodes() mà chấp nhận 1 chuỗi chứa câu truy vấn để tìm lọc ra những nút mà bạn muốn, nó sẽ trả về đối tượng XmlNodeList chứa danh sách tất cả các nút thỏa mãn điều kiện truy tìm.

Để hiểu rõ phương thức này, chúng ta cùng làm thử 1 ứng dụng nhỏ:

Ứng dụng của chúng ta bao gồm:

-1 textbox để điền tên của 1 người nào đó

-2 radio button: 1 để chọn tìm kiếm theo tên, 1 để chọn tìm kiếm theo họ.

-2 button

-10 textbox

-1 combobox để hiện thị mã nhân viên (employeeid) tương ứng với ông nhân viên mà bạn tìm.


Trước khi thụ lý các tình hướng, bạn làm:

-Imports System.Xml

-Khai báo 1 biến thành viên:

Dim nodelist As XmlNodeList

-Thụ lý tình huống Click của nút “Tìm”:


private void Button1_Click(object sender, System.EventArgs e)

 {

     //mở tập tin employees.xml

     XmlDocument doc = new XmlDocument();

     doc.Load(Application.StartupPath + "\\employees.xml");

     //nếu chọn radio button "Tên"

     if (RadioButton1.Checked == true) {

         //chọn phần tử employee nào

         //mà có ông con firstname nào = <textbox1.Text>

         //trả về các nút employee hợp lệ vào biến nodelist

         nodelist = doc.SelectNodes("/employees/employee[./firstname/text() = '" + TextBox1.Text + "']");

     }

     //nếu chọn radio button "Họ"

     if (RadioButton2.Checked) {

         //chọn phần tử employee nào

         //mà có ông con lastname nào = <textbox1.Text>

         //trả về các nút employee hợp lệ vào biến nodelist

         nodelist = doc.SelectNodes("/employees/employee[./lastname/text() = '" + TextBox1.Text + "']");

     }

     //đi xuyên qua các nút employee

     //của tập hợp các nút employee vừa tìm được ở trên

     foreach (XmlNode node in nodelist) {

         ComboBox1.Items.Add(node.Attributes("employeeid").Value);

     }

     ComboBox1.SelectedIndex = 0;

 }


Ở đoạn code tên không có gì đáng phải bàn nhiều, duy câu truy vấn là đáng bàn, bạn cứ hình dung bạn tìm 1 nút thông qua 1 đường dẫn khởi phát từ nút nguồn của tài liệu (employees).

/employees/employee[./firstname/text() = '" + TextBox1.Text + "']"

Nhu vậy, ta dịch câu truy vấn này như sau: “hãy cho tôi các nút employee mà có firstname = 1 tên chỉ định trong textbox1.

Hàm text() là hàm trả về đoạn text của 1 nút (ở đây là nút firstname).

Bạn lưu ý là nó sẽ trả về các nút employee, chứ không phải các nút firstname hay lastname gì đâu nhé.


Lúc này, nếu tìm được các nút thỏa điều kiện, user sẽ chọn mã số nhân viên trong combobox, và nhấn nút “Hiển thị” để cho biết các thông tin của nhân viên ứng với mã số nhân viên đó. Vậy, ta có đoạn code thụ lý tình huống Click của nút “Hiển thị” như sau:


private void Button2_Click(object sender, System.EventArgs e)

 {

     //label FirstName = giá trị nằm giữa cặp tag <firstname>...</firstname>

     Label8.Text = nodelist(ComboBox1.SelectedIndex).ChildNodes(0).InnerText;

     //label LastName = giá trị nằm giữa cặp tag <lastname>...</lastname>

     Label9.Text = nodelist(ComboBox1.SelectedIndex).ChildNodes(1).InnerText;

     //label HomePhone = giá trị nằm giữa cặp tag <homephone>...</homephone>

     Label10.Text = nodelist(ComboBox1.SelectedIndex).ChildNodes(2).InnerText;

     //label notes = giá trị nằm giữa cặp tag <notes>...</notes>

     Label11.Text = nodelist(ComboBox1.SelectedIndex).ChildNodes(3).InnerText;

 }

Nguồn bài viết: Sưu tầm

BÌNH LUẬN BÀI VIẾT

Bài viết mới nhất

LIKE BOX

Bài viết được xem nhiều nhất

HỌC HTML