LINQ TO XML


1. Tổng quan về Linq to Xml:

LINQ to XML cung cấp một giao diện lập trình XML.

LINQ to XML sử dụng những ngôn ngữ mới nhất của .NET Language Framework và được nâng cấp, thiết kế lại với giao diện lập trình XML Document object Model (DOM). Tuy nhiên nó cung cấp mô hình đối tượng mới đơn giản hơn và dễ thao tác hơn để làm việc.

LINQ to XML có cấu trúc truy vấn tương tự SQL.

Khả năng sử dụng kết quả truy vấn là tham số cho đối tượng XElement và XAttribute cho phép một phương pháp mạnh mẽ để tạo ra cây XML

Sử dụng LINQ to XML bạn có thể:

+ Tạo một file .xml.

+ Load XML từ nhiều file hoặc luồng.

+ Xuất XML ra file hoặc luồng.

+ Truy vấn cây XML bằng những truy vấn LINQ.

+ Thao tác cây XML trong bộ nhớ.

+ Biến đổi cây XML từ dạng này sang dạng khác.

Để có thể tiếp cận nhanh chóng các vấn đề này, ta sẽ lượt lượt đi vào các ví dụ cụ thể ở phần tiếp theo.

2Demo minh họa:

  • a. Cấu trúc cơ bản của một file Xml thông dụng:

  • a
  •  

 Dựa vào hình trên ta có thể thấy một file xml gồm các phần chính gồm:

     + Phần khai báo.

     + Phần thân :

  • Thẻ bắt đầu.
  • Thẻ kết thúc.
  • Các element.
  • Tag.

b. Tạo một cây XML:

Sử dụng đối tượng XDocument hoặc XElement để xây dựng một cây XML. Thông thường ta có thể tạo ra cây XML với nút gốc XElement.

Xem ví dụ cụ thể sau :

Hoặc:

Trong đó, gồm các phương thức sau:

  • Tạo một phần tử XML:

XElement(XName name, object content)

XElement(XName name)

+ XName: tên phần tử.

+ object: nội dụng của phần tử.

  • Tạo chú thích cho cây XML

XComment(String)

+ String: nội dung cần chú thích.

  • Đối tượng XDeclaration:

XDeclaration(string version,string encoding,string standalone)

Đối tượng XDeclaration được sử dụng để khai báo XML version, encoding, and có thể có hoặc không thuộc tính standalone của một tài liệu XML

c. Lưu file XML :

Thông thường, sau khi tạo file xong ta sẽ lưu nó lại bằng cách gọi phương thức Xdocument.Save(string url) như sau:

docXml.Save(“Contacts.xml”);

hoặc

          xml.Save(“Contacts.xml”);

d. Load một file XML:

Để nạp một file .xml vào chương trình ta dùng phương thức:

XDocument.Load( string url) hoặc XElement.Load(string url)

Với 2 ở trên ta có thể thực hiện như sau:

XDocument docXml = XDocument.Load(“Contacts.xml”);

hoặc

XElement  xml = XElement.Load(“Contacts.xml”);

e. Thực hiện các thao tác truy vấn trên file xml :

  •  Thêm (Add) một Element vào cây XML:

Sử dụng phương thức XElement.Add() :

XElement  xml = XElement.Load(“Contacts.xml”);

xml.Add(new XElement(“Contact”,

                        new XElement(“Contact”,

                        new XElement(“Name”, “Nguyễn Văn Tiến”),

                        new XElement(“Phone”, “0164302734″),

                        new XElement(“Address”,

                            new XElement(“Street”, “Văn Lang”),

                            new XElement(“City”, “ĐN”),

                            new XElement(“Postal”, “643263″)

                            )

                        )

);

xml.Add(new XElement(“Contact”,

                        new XElement(“Contact”,

                        new XElement(“Name”, “Trần Trung Tín”),

                        new XElement(“Phone”, “09803273273″),

                        new XElement(“Address”,

                            new XElement(“Street”, “Hùng Vương”),

                            new XElement(“City”, “HCM”),

                            new XElement(“Postal”, “34592″)

                            )

                        )

);

//Sau khi add xong, lưu lại

xml.Save(“Contacts.xml”);

Sau khi thêm 2 Element ta có được cây XML mới như sau:

  • Xóa (Delete) một Element khỏi cây XML:

 Ở đây, tôi sẽ trình bày một phương thức xóa một Element có “Phone = 0164302734″

XElement xml = XElement.Load(“Contacts.xml”);

xml.Elements(“Contact”).Where(c =>(string)c.Element(“Phone”) == “0164302734″).Remove();

xml.Save(“Contacts.xml”);

Sau khi thực hiện xong, Element sau sẽ bị xóa khỏi cây :

  • Cập nhật (Update) một Element trong cây XML

Tôi sẽ trình bày phương thức cập nhật lại thuộc tính (PhoneStreet) của một Contact mà có NameNguyễn Thành Luân.

      // Lấy về một contact có Name = “NTL”

    var contact = from c in xml.Elements(“Contact”)

                                where c.Element(“Name”).Value == “Nguyễn Thành Luân”

                                select c;

     // Duyệt nó , sau đó update lại Phone

    foreach (var item in contact)

    {

                item.SetElementValue(“Phone”, “0973 729 911″);

                item.Element(“Address”).Element(“Street”).Value = “Nguyễn Huệ”;

    }

    xml.Save(“Contacts.xml”);

 Ở  đây việc cập nhật được thực hiện bằng cách sử dụng phương thức :

SetElementValue(Xname name, Object value)

                    + name : Tên của thuộc tính

+ value : Giá trị muốn cập nhật.

Hoặc gán giá trị cần cập nhật cho Element đó qua phương thức :

          Element(Xname name).Value = value;

f. Các phương thức thông dụng khác:

// —— Lấy tất cả các Element có City = HCM

      var contacts = from c in xml.Elements(“Contact”)

                 where (string) Element(“Address”).Element(“City”)== “HCM”

                select c;

// —– Lấy tất cả các Element của file .xml

     IEnumerable<XElement> contacts = xml.Elements();

     foreach (var contact  in contacts)

     {

               // Action

     }

// —–  Take(x) : Phương thức lấy x Element đầu tiên

               var contact = xml.Elements().Take(3);

               foreach (var item in contact3)

              {

                         // Action

               }

// —– Skip(x) – Take(y) : Lấy y Element(“Contact”) từ vị trí x

              var contact = xml.Elements().Skip(1).Take(2);

// —– Reverse().Take(x) : Lấy x phương thức cuối cùng

  //  — + Duyệt ngược từ dưới lên:

            var contact =    xml.Elements().Reverse().Take(2);

            foreach (var item in contact)

            {

                   // Action

            }

  // —- + Duyệt theo chiều thuận:

            var contact = xml.Elements().Reverse().Take(2).Reverse();

            foreach (var item in contact)

            {

                // Action

            }

Tóm lại, tôi vừa trình bày cho các điểm cơ bản về Linq To Sql gồm: 

+ Tạo

+ Load

+ Save

+ Query : Insert, Delete, Update

+ Một vài phương thức thông dụng khác.

One thought on “LINQ TO XML

  1. Pingback: TỔNG QUAN VỀ LINQ | Welcom to Xi-trum blog ~.^ !!!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s