Thứ bảy, ngày 25 tháng 11 năm 2017

Tìm hiểu XML phần 2

Ngày đăng: 3/1/2011, 10:18:27AM | Lượt xem: 3,075
Hot!

Tiếp theo loạt bài về tìm hiểu XML. Một kiểu lưu trữ dữ liệu đơn giản nhưng khá tiện lợi. Tuy nhiên tính bảo mật của nó không cao.

1.3 Các phương pháp tìm kiếm tài liệu trên XML
Có 4 phương pháp thường được sử dụng như sau:
-  Phương pháp sử dụng GetElementByTagName ()
-  Phương pháp sử dụng GetElementById ()
-  Lựa chọn nodes cụ thể bằng phương pháp sử dụng SelectNodes ()
-  Lựa chọn node bằng phương pháp sử dụng SelectSingleNode ()
Việc nắm vững các phương pháp tìm kiếm trên XML sẽ tạo điều rất thuận  lợi khi chúng ta xây
dựng các chương trình ứng dụng,ta có thiết kế cho chương trình có khả năng tìm kiếm và tối ưu
nó.Sau đây,mình xin trình bày vắn tắt các phương pháp tìm kiếm trên như sau:
 
1.3.1)Phương pháp GetElementByTagName ()
Phương pháp GetElementsByTagName () là phương pháp xây dựng các lớp XmlDocument chấp
nhận tên của từ khóa (ngoại trừ <và>) và trả lại tất cả các nodes phù hợp với từ khóa  là tên.Các
node này trả lại như là một XmlNodeList. Lớp XmlNodeList được xem như là đại diện tập hợp
các đối  tượng XmlNode. Để xem GetElementsByTagName  () hoạt động như  thế nào, chúng  ta
cần phải phát triển ứng dụng sau:
 
Ví dụ minh họa: (Chương trình xây dựng trên Window Applycation Tải file đính kèm bên dưới
GetElementByTagName .zip cho tiện theo dõi)
Mục đích ví dụ là tìm kiếm trên XML các node có nội dung giống với ta tag name ta truyền vào

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml;
 
namespace Search_Methods
{
    public partial class Form1 : Form
    {
        XmlNodeList list = null;
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            XmlDocument doc = new XmlDocument();
            doc.Load(@"D:\Employees.xml");
            list = doc.GetElementsByTagName(textBox1.Text);
            listBox1.Items.Clear();
            foreach (XmlNode node in list)
            { Piuit – www.uitstudent.com
 
                listBox1.Items.Add(node.Name);
            
            }
        }
 
        private void listBox1_SelectedIndexChanged(object sender, EventArgs
e)
        {
            textBox2.Text = list[listBox1.SelectedIndex].InnerText;
        }
    }
}


Lưu  ý:  GetElementByTagName  ()  là  phương  pháp  của  loại  hình  XmlNodeList,class
XmlNodeList  tập hợp nhiều đối tượng Xmlnode,sau khi ta bấm Search,thì các nodes có tagname
trùng với trong ô textbox1 sẽ hiện ra trong danh sách listbox,nội dung các node được lựa chọn sẽ
được hiển  thị  trong  textbox 2  thông qua  thuộc  tính  InnerXml.Ví dụ vào nhập vào ô  textbox  là
firstname thử xem…kết quả thế nào  ^-^.
 
1.3.2)Phương pháp GetElementById()
Thông thường trông một tài liệu XML sẽ nó một thuộc tính là duy nhất,thuộc tính này đặc trưng
cho  các  element  trong  tài  liệu XML,chúng  ta  hoàn  toàn  có  thể  tìm  hiểu  các  element  dựa  trên
thuộc tính này.Để minh họa cho nội dung này ta sẽ xây dựng một ứng dụng nhỏ sử dụng phương
pháp GetElementById()
 
Ví dụ minh họa: (Chương trình xây dựng trên Window Applycation Tải file đính kèm bên dưới
GetElementById .zip cho tiện theo dõi)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml;
namespace GetElementById
{
    public partial class Form1 : Form
    {
        XmlDocument doc = new XmlDocument();
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            doc.Load(Application.StartupPath + "/employees.xml"); Piuit – www.uitstudent.com
 
            foreach (XmlNode node in doc.DocumentElement.ChildNodes)
            {
                string employeeid = node.Attributes["employeeid"].Value;
                comboBox1.Items.Add(employeeid);
            }
 
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            //su dung phuong thuc GetElementById()
            XmlElement ele =
doc.GetElementById(comboBox1.SelectedItem.ToString());
            label6.Text = ele.ChildNodes[0].InnerText;
            label7.Text = ele.ChildNodes[1].InnerText;
            label8.Text = ele.ChildNodes[2].InnerText;
            label9.Text = ele.ChildNodes[3].InnerText;
        }
    }
}


Khi ta thay đổi giá trị EmployeeID thì các label cũng hiển thị những nội dung khác nhau.
 
1.3.3)Phương pháp SelectNodes()
Phương pháp này là một trong những phương pháp khá phức tạp,nó chó bạn can thiệp sâu vào dữ
liệu XML,tức  là bạn có khả năng tìm kiếm một Node phù hợp với mô hình phát triển ứng dụng
của mình.Điểu này được thực hiện với sự giúp đỡ của Xpath.Class XmlDocument cung cấp cho
ta phương  thức SelectNodes() để  lọc các Nodes có sằn phù hợp với  tiêu chuẩn Xpath(Xpath có
thể hiểu nôm na  là đường dẫn  trong XML). Nó  trả về một XmlNodeList có chứa các đối  sánh
nodes.Để hiểu chức năng của nó,ta thử làm một ví dụ minh họa sau:
 
Ví dụ minh họa: (Chương trình xây dựng trên Window Applycation Tải file đính kèm bên dưới SelectNodes .zip cho tiện theo dõi)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        XmlNodeList list = null;
        public Form1()
        {
            InitializeComponent();
        }
 Piuit – www.uitstudent.com
 
        private void button1_Click(object sender, EventArgs e)
        {
            XmlDocument doc = new XmlDocument();
            doc.Load(Application.StartupPath + "/employees.xml");
            if (radioButton1.Checked)
            {
                list =
doc.SelectNodes(string.Format("//employee[./firstname/text()='{0}']",
textBox1.Text));
                //list = doc.SelectNodes("//employee[./firstname/text()='" +
textBox1.Text + "']");
            }
            else
            {
                list =
doc.SelectNodes(string.Format("//employee[./lastname/text()='{0}'",
textBox1.Text));
                //list = doc.SelectNodes("//employee[./lastname/text()='" +
textBox1.Text + "']");
            }
            foreach (XmlNode node in list)
            {
                comboBox1.Items.Add(node.Attributes["employeeid"].Value);
            }
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            if (comboBox1.SelectedIndex < 0)
            {
                MessageBox.Show("Please select employeeID");
            }
            else
            {
                label8.Text  =
list[comboBox1.SelectedIndex].ChildNodes[0].InnerText;
                label9.Text  =
list[comboBox1.SelectedIndex].ChildNodes[1].InnerText;
                label10.Text =
list[comboBox1.SelectedIndex].ChildNodes[2].InnerText;
                label11.Text =
list[comboBox1.SelectedIndex].ChildNodes[3].InnerText;
            
            }
        }
 
    }
}


Chương trình sẽ tìm kiếm theo hai chế độ là firstname và lastname,nếu tìm thấy thì nó sẽ xuất
employeeid vào combobox,và khi bạn bấm vào nút Show Details.
 
1.3.4)Phương pháp SelectSingleNode()
 
Phương pháp  tương  tự như phương pháp SelectNodes,sự khác biệt ở đây  là  thay vì  trả về danh
sách các đối  tượng,thì phương pháp  này  chỉ  trả về một đối  tượng,nếu  như  trong phương pháp
SelectNodes trả về một XmlNodeList thì phương pháp này lại trả về XmlNode.
Ví dụ minh họa: (Chương trình xây dựng trên Window Applycation Tải file đính kèm bên dưới
SelectSingleNode .zip cho tiện theo dõi)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml;
 
namespace SelectSingleNode
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        XmlNode node = null;
        private void button1_Click(object sender, EventArgs e)
        {
            XmlDocument doc = new XmlDocument();
            doc.Load(Application.StartupPath + "/employees.xml");
            if (radioButton1.Checked)
            {
                node =
doc.SelectSingleNode(string.Format("//employee[./firstname/text()='{0}']",
textBox1.Text));
 
            }
            else
            {
                node =
doc.SelectSingleNode(string.Format("//employee[./lastname/text()='{}']",
textBox1.Text));
            }
            if (node != null)
            {
                comboBox1.Items.Add(node.Attributes["employeeid"].Value);
            }
 
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            if (node == null)
            {
                MessageBox.Show("Please select Employee ID");
                return;
            } Piuit – www.uitstudent.com
 
            label8.Text = node.ChildNodes[0].InnerText;
            label9.Text = node.ChildNodes[1].InnerText;
            label10.Text = node.ChildNodes[2].InnerText;
            label11.Text = node.ChildNodes[3].InnerText; 
        }
    }
}

2.Tổng kết:
Việc nắm vững XML là vấn đề mà ai theo lập trình cũng cần phải biết,XML đều được sự hỗ trợ
từ Mircosoft,Sun,  IBM, Oracles…Nó  rất  linh động và mạnh mẽ.Như vậy phần này  ta cần nắm
những vấn đề chính sau:
-  Tìm hiểu các chức năng liên quan đến DOM
-  Các phương pháp  tìm kiếm  trên XML:mỗi phương pháp đều có cái hay của nó,các bạn
nên nắm vững các sử dụng để áp dụng linh hoạt khi cần thiết
Vì  tính quan  trọng và ứng dụng rộng của XML nên phần XML còn khoảng 3 bài viết nữa mới
kết thúc:Phần sau các bạn sẽ tìm hiếu sau về các chức năng đọc,viết XML,XML in ADO.NET,sử
dụng XML in .NET…. 
Link tải các ví dụ kèm theo
GetElementById  GetElementByTagName.  SelectSingleNode  SelectNodes

Cảm ơn các bạn đã quan tâm đến bài viết này
Thân

stty
 Chia sẻ qua: 
Hot!
Ý kiến bạn đọc

These items will be permanently deleted and cannot be recovered. Are you sure?

Gallery

image

Maecenas viverra rutrum pulvinar

Maecenas viverra rutrum pulvinar! Aenean vehicula nulla sit amet metus aliquam et malesuada risus aliquet. Vestibulum rhoncus, dolor sit amet venenatis porta, metus purus sagittis nisl, sodales volutpat elit lorem…

Read more

Text Links

Thiết kế logo chuyên nghiệp Insky
DAFABET
W88 w88b.com/dang-ky-tai-khoan-w88
W88
ca do bong da online
Copyright © 2011 - 2012 vietshare.vn by phamkhuong102@gmail.com doanhkisi2315@gmail.com. All rights reserved.