LINQ to XML có thể dễ dàng truy cập đến các tính năng của LINQ như các toán tử LINQ, giao diện lập trình, v.v. Và do tích hợp trong .NET Framework nên LINQ to XML có thể sử dụng các tính năng mạnh mẽ của nó như debugging, compile time checking, strong typing, v.v.

Với LINQ to XML, việc nạp tài liệu XML vào bộ nhớ, việc đọc hay ghi tài liệu XML đến ổ đĩa hay bộ nhớ đều được thực hiện rất dễ dàng. Đồng thời với LINQ to XML, các nhà phát triển sẽ tiết kiệm nhiều công sức trong việc học và sử dụng các ngôn ngữ truy vấn XML phức tạp.

Sức mạnh của LINQ to XML chứa trong namespace System.Xml.Linq với 19 lớp cơ bản sau:

  • XAttribute
  • XCData
  • XComment
  • XContainer
  • XDeclaration
  • XDocument
  • XDocumentType
  • XElement
  • XName
  • XNamespace
  • XNode
  • XNodeDocumentOrderComparer
  • XNodeEqualityComparer
  • XObject
  • XObjectChange
  • XobjectChangeEventArgs
  • XObjectEventHandler
  • XProcessingInstruction
  • XText

Đọc một tập tin XML dùng LINQ

Mã C#:


// tạo một chuỗi chứa định dạng XML

string myXML = @"<Departments>

<Department>Account</Department>

<Department>Sales</Department>

<Department>Pre-Sales</Department>

<Department>Marketing</Department>

</Departments>";

// chuyển chuỗi thành tài liệu XML

XDocument xdoc = new XDocument();

xdoc = XDocument.Parse(myXML);

// duyệt tài liệu XML

var result = xdoc.Element("Departments").Descendants();

foreach (XElement item in result)

{

Console.WriteLine("Department Name - " + item.Value);

}

Mã VB:


Dim myXML As String = "<Departments>" & vbCr & vbLf &

"<Department>Account</Department>" & vbCr & vbLf &

"<Department>Sales</Department>" & vbCr & vbLf &

"<Department>Pre-Sales</Department>" & vbCr & vbLf &

"<Department>Marketing</Department>" & vbCr & vbLf &

"</Departments>"

Dim xdoc As New XDocument()

xdoc = XDocument.Parse(myXML)

Dim result = xdoc.Element("Departments").Descendants()

For Each item As XElement In result

Console.WriteLine("Department Name - " + item.Value)

Next

Kết quả:


Department Name - Account

Department Name - Sales

Department Name - Pre-Sales

Department Name – Marketing

Thêm một node mới đến tài liệu XML

Mã C#


// tạo một chuỗi chứa định dạng XML

string myXML = @"<Departments>

<Department>Account</Department>

<Department>Sales</Department>

<Department>Pre-Sales</Department>

<Department>Marketing</Department>

</Departments>";

// chuyển chuỗi thành tài liệu XML

XDocument xdoc = new XDocument();

xdoc = XDocument.Parse(myXML);

//thêm phần tử mới vào cuối tài liệu XML (sau Marketing) xdoc.Element("Departments").Add(new XElement("Department", "Finance"));

//thêm một phần tử mới vào đầu (trước Account)

xdoc.Element("Departments").AddFirst(new XElement("Department", "Support"));

// duyệt tài liệu XML

var result = xdoc.Element("Departments").Descendants();

foreach (XElement item in result)

{

Console.WriteLine("Department Name - " + item.Value);

}

Mã VB:


Dim myXML As String = "<Departments>" & vbCr & vbLf &

"<Department>Account</Department>" & vbCr & vbLf &

"<Department>Sales</Department>" & vbCr & vbLf &

"<Department>Pre-Sales</Department>" & vbCr & vbLf &

"<Department>Marketing</Department>" & vbCr & vbLf &

"</Departments>"

Dim xdoc As New XDocument()

xdoc = XDocument.Parse(myXML)

xdoc.Element("Departments").Add(New XElement("Department", "Finance"))

xdoc.Element("Departments").AddFirst(New XElement("Department",

"Support"))

Dim result = xdoc.Element("Departments").Descendants()

For Each item As XElement In result

Console.WriteLine("Department Name - " + item.Value)

Next

Kết quả:


Department Name - Support

Department Name - Account

Department Name - Sales

Department Name - Pre-Sales

Department Name - Marketing

Department Name - Finance

Xoá một phần tử từ tài liệu XML

Mã C#


// tạo một chuỗi chứa định dạng XML

string myXML = @"<Departments>

<Department>Account</Department>

<Department>Sales</Department>

<Department>Pre-Sales</Department>

<Department>Marketing</Department>

</Departments>";

// chuyển chuỗi thành tài liệu XML

XDocument xdoc = new XDocument();

xdoc = XDocument.Parse(myXML);

//Xoá Sales

xdoc.Descendants().Where(s =>s.Value == "Sales").Remove();

// duyệt tài liệu XML

var result = xdoc.Element("Departments").Descendants();

foreach (XElement item in result)

{

Console.WriteLine("Department Name - " + item.Value);

}

Mã VB:


Dim myXML As String = "<Departments>" & vbCr & vbLf &

"<Department>Account</Department>" & vbCr & vbLf &

"<Department>Sales</Department>" & vbCr & vbLf &

"<Department>Pre-Sales</Department>" & vbCr & vbLf &

"<Department>Marketing</Department>" & vbCr & vbLf &

"</Departments>"

Dim xdoc As New XDocument()

xdoc = XDocument.Parse(myXML)

xdoc.Descendants().Where(Function(s) s.Value = "Sales").Remove()

Dim result = xdoc.Element("Departments").Descendants()

For Each item As XElement In result

Console.WriteLine("Department Name - " + item.Value)

Next

Kết quả:


Department Name - Account

Department Name - Pre-Sales

Department Name - Marketing

< Học LINQ