KỲ 2
DI CHUYỂN XUYÊN QUA TÀI LIỆU XML
Một tài liệu XML bao gồm 1 hoặc nhiều nút, và có những nút nằm bên trong nút khác. Những nút nằm bên trong nút khác gọi là nút con.
Lớp XmlNode có 1 tập hợp gọi là ChildNodes mà chứa danh sách tất cả các nút con của một nút bất kỳ. Ngoài ra, chúng còn có các thuộc tính: ParentNode, FirstChild, LastChild, NextSibling và PreviousSibling mà cho phép bạn di chuyển đến bất kỳ nút nào. Như thuộc tính ParentNode giúp bạn di chuyển đến nút cha của 1 nút nào đó, hoặc thuộc tính NextSibling giúp bạn di chuyển đến nút kế tiếp ở cùng cấp của nút hiện hành.
Kỳ này, chúng ta cũng thử làm 1 project nhỏ:
Ứng dụng của chúng ta chỉ có 1 treeview. Mục đích của chúng ta là hiển thị cấu trúc của tập tin XML lên treeview lúc chương trình được Load lên.
private void Form1_Load(object sender, System.EventArgs e)
{
string path = Application.StartupPath + "\\employees.xml";
XmlDocument document = new XmlDocument();
document.Load(path);
TreeNode rootnode = TreeView1.Nodes.Add(document.DocumentElement.Name);
XmlNodeList nodes = document.DocumentElement.ChildNodes;
foreach (XmlNode childnode in nodes) {
TreeNode empNode = new TreeNode(childnode.Name + ":" + childnode.Attributes("employeeid").Name + "=" + childnode.Attributes("employeeid").Value);
foreach (XmlNode node in childnode.ChildNodes) {
if (node.Name == "firstname") {
empNode.Nodes.Add("First Name:" + node.InnerText);
}
if (node.Name == "lastname") {
empNode.Nodes.Add("Last Name:" + node.InnerText);
}
if (node.Name == "homephone") {
empNode.Nodes.Add("Home Phone:" + node.InnerText);
}
if (node.Name == "notes") {
empNode.Nodes.Add("Notes:" + node.InnerText);
}
}
rootnode.Nodes.Add(empNode);
}
}
Lưu ý: Nhớ import namespace System.Xml
Đoạn code tạo 1 thể hiện của lớp XmlDocument và nạp tập tin employees.xml được đặt trong cùng thư mục của file thực thi của chương trình. Nút gốc của tài liệu xml có thể được truy cập thông qua thuộc tính DocumentElement của đối tượng thể hiện của lớp XmlDocument. Thuộc tính Name của DocumentElement trả về tên của nút gốc này (employees).
Nút employees chứa 3 nút employee, để truy cập 3 nút này, ta dùng thuộc tính ChildNodes của DocumentElement mà ta đã nói ở trên. Tà dùng vòng lặp foreach để đi lần lượt qua từng nút employee một.
Để truy cập attribute employeeid, ta sử dụng collection Attribute của lớp XmlNode. Bạn có thể xác định attribute nào cần lấy thông qua chỉ mục hoặc tên của nó.
Để nhận được chuỗi nằm giữa 1 cặp tag, ta dùng thuộc tính InnerText của XmlNode.