24/05/2018, 21:08

Giới thiệu về DOM

DOM bao gồm hệ thông các đối tượng thư viện cho phép truy xuất nội dung của tài liệu Xml. Toàn bộ tập tin Xml trên bô nhớ phụ === > Đối tượng XmlDocument của DOM Mỗi thẻ bên trong tập tin Xml === > Đối tượng XmlElement của DOM Mỗi ...

DOM bao gồm hệ thông các đối tượng thư viện cho phép truy xuất nội dung của tài liệu Xml.

Toàn bộ tập tin Xml trên bô nhớ phụ

=== > Đối tượng XmlDocument của DOM Mỗi thẻ bên trong tập tin Xml

=== > Đối tượng XmlElement của DOM Mỗi thuộc tính của thẻ

==== > Đối tương XmlAttribute của DOM

Tập tin Duong_tron.xml biểu diễn thông tin về đường tròn C có tậm O(2,1) và bán kính R=4

<?xml version="1.0" encoding="utf-8" ?>

<DUONG_TRON Ban_kinh="4">

<DIEM x="2"y="1" />

</DUONG_TRON>

Tương ứng

1 đối tượng XmlDocument

2 đối tượng XmlElement

3 đối tượng XmlAttribute

Tập tin Bang_don_gia.Xml biểu diễn thông tin về bảng đơn giá thuê phòng của khách sạn

<?xml version="1.0" encoding="utf-8" ?>

<KHACH_SAN Ten="X" Dia_chi="123 ABC" >

<LOAI_PHONG Ten="Loại A" Don_gia="280000" />

<LOAI_PHONG Ten="Loại B" Don_gia="240000" />

<LOAI_PHONG Ten="Loại C" Don_gia="180000" />

<LOAI_PHONG Ten="Loại đặc biệt" Don_gia="320000" />

</KHACH_SAN> 

Tương ứng

1 đối tượng XmlDocument

5 đối tượng XmlElement

10 đối tượng XmlAttribute

Trình bày các thao tác cơ bản nhất về DOM

* Khai báo sử dụng thư viện DOM

Khai báo sử dụng DOM

VB6

Sử dụng thư viện Microsoft XML, v50

Khai báo trong chức năng Project- References

VB.NET

Sử dụng thư viện Xml

Imports System.Xml

C#

Sử dụng thư viện Xml

using System.Xml ;

* Khai báo sử dụng tài liệu Xml

Khai báo sử dụng tài liệu XML

VB6

Khai báo đối tượng thuộc lớp DOMDocument

Dim Tai_lieu As New DOMDocument

VB.NET

Khai báo đối tượng thuộc lớp XmlDocument

Dim Tai_lieu As New XmlDocument

C#

Khai báo đối tượng thuộc lớp XmlDocument

XmlDocument Tai_lieu = new XmlDocument ();

* Truy xuất nút con trực tiếp của nút

Truy xuất đến nút con trực tiếp của một nút

VB6

Khai báo đối tượng Nut_con thuộc giao diện IXMLDOMElement và nhận đối tượng từ chức năng tương ứng của Nut_cha

Dim Nut_con As IXMLDOMElement

Set Nut_con= Nut_cha.selectSingleNode(Ten_nut_con)

VB.NET

Khai báo đối tượng Nut_con thuộc giao diện XmlElement và nhận đối tượng từ chức năng tương ứng của Nut_cha

Dim Nut_con As XmlElement

Nut_con= Nut_cha.SelectSingleNode(Ten_nut_con)

C#

Khai báo đối tượng Nut_con thuộc giao diện XmlElement và nhận đối tượng từ chức năng tương ứng của Nut_cha

XmlElement Nut_con ;

Nut_con= Nut_cha.SelectSingleNode(Ten_nut_con) ;

* Truy xuất thuộc tính của nút

Truy xuất đến thuộc tính của một nút

VB6

Nhận giá trị : Gia_tri=Nut.getAttribute(Ten_thuoc_tinh)

Cập nhật/bổ sung thuộc tính với giá trị

Nut.setAttribute Ten_thuoc_tinh, Gia_tri

VB.NET

Nhận giá trị : Gia_tri=Nut.GetAttribute(Ten_thuoc_tinh)

Cập nhật/bổ sung thuộc tính với giá trị

Nut.SetAttribute (Ten_thuoc_tinh, Gia_tri)

C#

Nhận giá trị :

// Nhận một số nguyên

Gia_tri=int.Parse(Nut.GetAttribute(Ten_thuoc_tinh)) ; Cập nhật/bổ sung thuộc tính với giá trị

Nut.SetAttribute(Ten_thuoc_tinh, Gia_tri.ToString()) ;

* Truy xuất nội dung của nút

Truy xuất đến nội dung ( giá trị chuỗi ) của một nút

VB6

Nhận nội dung :

Gia_tri=Nut.nodeValue

Cập nhật nội dung

Nut.nodeValue=Gia_tri

VB.NET

Nhận nội dung : Gia_tri=Nut.InnerText

Cập nhật nội dung

Nut.InnerTextt=Gia_tri

C#

Nhận nội dung :

// Nhận số thực

Gia_tri=Double.Parse(Nut.InnerText);

Cập nhật nội dung

Nut.InnerTextt=Gia_tri.ToSstring();

* Tạo nút mới

Tạo nút mới

VB6

Khai báo đối tượng Nut thuộc giao diện IXMLDOMElementnvà nhận đối tượng từ chức năng tương ứng của Tai_lieu

Dim Nut As IXMLDOMElement

Set Nut= Tai_lieu.CreateElement(Ten_nut)

VB.NET

Khai báo đối tượng Nut thuộc giao diện XmlElement và nhận đối tượng từ chức năng tương ứng của Tai_lieu

Dim Nut As XmlElement

Nut= Tai_lieu.CreateElement(Ten_nut)

C#

Khai báo đối tượng Nut thuộc giao diện XmlElement và nhận đối tượng từ chức năng tương ứng của Tai_lieu

XmlElement Nut ;

Nut= Tai_lieu.CreateElement(Ten_nut) ;

* Bổ sung nút vào nút cha

Bổ sung nút con vào nút cha

VB6

Nut_cha.appendChild Nut_con

VB.NET

Nut_cha.AppendChild( Nut_con)

C#

Nut_cha.appendChild (Nut_con);

Giới thiệu chung về các ví dụ minh họa

* Đọc phân số

Cách 1 : Chỉ sử dụng hàm Main

Imports System.Xml

Module Doc_phan_so_Main

Public Sub Main()

Dim Tu_so, Mau_so As Integer

Dim Duong_dan As String = "....Du_lieuPhan_so.xml" 

Dim Tai_lieu As New XmlDocument Tai_lieu.Load(Duong_dan) ' Chưa xử lý lỗi

Dim Goc As XmlElement = Tai_lieu.DocumentElement

Tu_so = Goc.GetAttribute("Tu_so") Mau_so = Goc.GetAttribute("Mau_so") 

Dim Chuoi As String = "Phân số : " Chuoi &= Tu_so & "/" & Mau_so Console.Write(Chuoi)

Console.ReadLine() End Sub

End Module

=========================

Cách 2 : Sử dụng kiểu & hàm tự định nghĩa

Imports System.Xml

Module Doc_phan_so_Kieu_Ham

Structure PHAN_SO

Public Tu_so As Integer Public Mau_so As Integer End Structure

Public Sub Main()

Dim Ps As PHAN_SO

Dim Duong_dan As String = "....Du_lieuPhan_so.xml" Ps = Doc_phan_so(Duong_dan)

Dim Chuoi As String = "Phân số : " & Chuoi_phan_so(Ps) Console.Write(Chuoi)

Console.ReadLine() End Sub

Public Function Doc_phan_so(ByVal Duong_dan As String) As PHAN_SO Dim Kq As PHAN_SO

Dim Tai_lieu As New XmlDocument

Tai_lieu.Load(Duong_dan) ' Chưa xử lý lỗi

Dim Goc As XmlElement = Tai_lieu.DocumentElement

Kq.Tu_so = Goc.GetAttribute("Tu_so") Kq.Mau_so = Goc.GetAttribute("Mau_so")

Return Kq

End Function

Public Function Chuoi_phan_so(ByVal Ps As PHAN_SO) As String

Dim Kq As String = ""

Kq &= Ps.Tu_so & "/" & Ps.Mau_so

Return Kq 

End Function 

End Module

- Đọc phân số VB.NET

Cách 1 : Chỉ sử dụng hàm Main

Imports System.Xml

Module Doc_phan_so_Main

Public Sub Main()

Dim Tu_so, Mau_so As Integer

Dim Duong_dan As String = "....Du_lieuPhan_so.xml" Dim Tai_lieu As New XmlDocument Tai_lieu.Load(Duong_dan) ' Chưa xử lý lỗi

Dim Goc As XmlElement = Tai_lieu.DocumentElement

Tu_so = Goc.GetAttribute("Tu_so") Mau_so = Goc.GetAttribute("Mau_so")

Dim Chuoi As String = "Phân số : "

Chuoi &= Tu_so & "/" & Mau_so Console.Write(Chuoi) Console.ReadLine()

End Sub

End Module

=========================

Cách 2 : Sử dụng kiểu & hàm tự định nghĩa

Imports System.Xml

Module Doc_phan_so_Kieu_Ham

Structure PHAN_SO

Public Tu_so As Integer

Public Mau_so As Integer 

End Structure

Public Sub Main()

Dim Ps As PHAN_SO

Dim Duong_dan As String = "....Du_lieuPhan_so.xml" Ps = Doc_phan_so(Duong_dan)

Dim Chuoi As String = "Phân số : " & Chuoi_phan_so(Ps) Console.Write(Chuoi)

Console.ReadLine() End Sub

Public Function Doc_phan_so(ByVal Duong_dan As String) As PHAN_SO Dim Kq As PHAN_SO

Dim Tai_lieu As New XmlDocument

Tai_lieu.Load(Duong_dan) ' Chưa xử lý lỗi

Dim Goc As XmlElement = Tai_lieu.DocumentElement

Kq.Tu_so = Goc.GetAttribute("Tu_so") Kq.Mau_so = Goc.GetAttribute("Mau_so") Return Kq

End Function

Public Function Chuoi_phan_so(ByVal Ps As PHAN_SO) As String

Dim Kq As String = ""

Kq &= Ps.Tu_so & "/" & Ps.Mau_so

Return Kq 

End Function 

End Module

- Đọc phân số C#

Cách 1 : Chỉ sử dụng hàm Main

using System;

using System.Xml;

public class Doc_phan_so_Main

{

public static void Main()

{

int Tu_so, Mau_so;

String Duong_dan = "....Du_lieuPhan_so.xml"; XmlDocument Tai_lieu = new XmlDocument();

Tai_lieu.Load (Duong_dan) ; // Chưa xử lý lỗi XmlElement Goc=Tai_lieu.DocumentElement ; Tu_so =int.Parse (Goc.GetAttribute ("Tu_so")) ; Mau_so =int.Parse (Goc.GetAttribute ("Mau_so")); String Chuoi = "Phân số :";

Chuoi += Tu_so + "/" + Mau_so; Console.Write(Chuoi); Console.ReadLine();

}

}

Cách 2 : Sử dụng kiểu & hàm tự định nghĩa

using System;

using System.Xml;

public class Ghi_phan_so_Kieu_Ham

{

public struct PHAN_SO

{

public int Tu_so; // > 0

public int Mau_so; // > 0

}

public static void Main()

{

PHAN_SO Ps;

Ps = Nhap_phan_so();

String Duong_dan = "....Du_lieuPhan_so.xml";

if (Ghi_phan_so(Ps, Duong_dan)) Console.Write("Đã ghi ");

else

Console.Write("Lỗi khi ghi "); Console.ReadLine();

}

public static PHAN_SO Nhap_phan_so()

{

PHAN_SO Kq; Console.Write("Tử số:");

Kq.Tu_so = int.Parse(Console.ReadLine()); // Chưa xử lý lỗi

Console.Write("Mẩu số:");

Kq.Mau_so = int.Parse(Console.ReadLine()); // Chưa xử lý lỗi return Kq;

}

public static Boolean Ghi_phan_so(PHAN_SO Ps, String Duong_dan )

{

Boolean Kq = true;

XmlDocument Tai_lieu = new XmlDocument();

XmlElement Goc = Tai_lieu.CreateElement("PHAN_SO"); Goc.SetAttribute("Tu_so", Ps.Tu_so.ToString()); Goc.SetAttribute("Mau_so", Ps.Mau_so.ToString()); Tai_lieu.AppendChild(Goc);

// Ghi tài liệu Xml

Tai_lieu.Save(Duong_dan);

return Kq;

}

}

* Đọc đường tròn

Imports System.Xml

Module Doc_duong_tron

Structure DIEM

Public x As Double Public y As Double End Structure

Structure DUONG_TRON Public Tam As DIEM

Public Ban_kinh As Double

End Structure

Public Sub Main()

Dim Dt As DUONG_TRON

Dim Duong_dan As String = "....Du_lieuDuong_tron.xml" Dt = Doc_duong_tron(Duong_dan)

Dim Chuoi As String = "Phương trình dường tròn : " & Chuoi_duong_tron(Dt) Console.Write(Chuoi)

Console.ReadLine() End Sub

Public Function Doc_duong_tron(ByVal Duong_dan As String) As DUONG_TRON Dim Kq As DUONG_TRON

Dim Tai_lieu As New XmlDocument

Tai_lieu.Load(Duong_dan) ' Chưa xử lý lỗi

Dim Goc As XmlElement = Tai_lieu.DocumentElement

Kq.Ban_kinh = Goc.GetAttribute("Ban_kinh")

Dim Nut As XmlElement = Goc.ChildNodes(0) Kq.Tam.x = Nut.GetAttribute("x")

Kq.Tam.y = Nut.GetAttribute("y") Return Kq

End Function

Public Function Chuoi_duong_tron(ByVal Dt As DUONG_TRON) As String

Dim Kq As String = ""

Kq &= String.Format(" (x -{0})^2 + ( y -{1})^2 = {2} ^2", Dt.Tam.x, Dt.Tam.y, Dt.Ban_kinh) Return Kq

End Function

End Module

* Đọc dãy số

Imports System.Xml

Module Doc_day_so

Public Sub Main()

Dim a As ArrayList

Dim Duong_dan As String = "....Du_lieuDay_so.xml"

a = Doc_day_so(Duong_dan)

Dim Chuoi As String = "Dãy số : " & Chuoi_day_so(a) Console.Write(Chuoi)

Console.ReadLine() End Sub

Public Function Doc_day_so(ByVal Duong_dan As String) As ArrayList

Dim Kq As New ArrayList

Dim Tai_lieu As New XmlDocument

Tai_lieu.Load(Duong_dan) ' Chưa xử lý lỗi

Dim Goc As XmlElement = Tai_lieu.DocumentElement For Each Nut As XmlElement In Goc.ChildNodes Kq.Add(Nut.GetAttribute("Gia_tri"))

Next Return Kq End Function

Public Function Chuoi_day_so(ByVal a As ArrayList) As String

Dim Kq As String = ""

For Each So As Integer In a

Kq &= So & " " Next

Return Kq

End Function 

End Module

* Ghi phân số

Cách 1 : Chỉ sử dụng hàm Main

Imports System.Xml

Module Ghi_phan_so_Main

Public Sub Main()

Dim Tu_so, Mau_so As Integer

'Nhập liệu

Console.Write("Tử số:")

Tu_so = Integer.Parse(Console.ReadLine) ' Chưa kiểm tra

Console.Write("Mẩu số:")

Mau_so = Integer.Parse(Console.ReadLine) ' Chưa kiểm tra

' Tạo tài liệu Xml 

Dim Tai_lieu As New XmlDocument

Dim Goc As XmlElement = Tai_lieu.CreateElement("PHAN_SO") Goc.SetAttribute("Tu_so", Tu_so)

Goc.SetAttribute("Mau_so", Mau_so) Tai_lieu.AppendChild(Goc)

'Ghi

Dim Duong_dan As String = "....Du_lieuPhan_so.xml"

Tai_lieu.Save(Duong_dan) Console.ReadLine()

End Sub

End Module

============================== 

Cách 2 : Sử dụng kiểu & hàm tự định nghĩa

Imports System.Xml

Module Ghi_phan_so_Kieu_Ham

Structure PHAN_SO

Public Tu_so As Integer Public Mau_so As Integer End Structure

Public Function Nhap_phan_so() As PHAN_SO Dim Kq As PHAN_SO

Console.Write("Tử số")

Kq.Tu_so = Integer.Parse(Console.ReadLine) ' Chưa kiểm tra

Console.Write("Mẩu số")

Kq.Mau_so = Integer.Parse(Console.ReadLine) ' Chưa kiểm tra

Return Kq

End Function

Public Function Ghi_phan_so(ByVal Ps As PHAN_SO, ByVal Duong_dan As String) As Boolean

Dim Kq As Boolean = True

Dim Tai_lieu As New XmlDocument

Dim Goc As XmlElement = Tai_lieu.CreateElement("PHAN_SO") Goc.SetAttribute("Tu_so", Ps.Tu_so)

Goc.SetAttribute("Mau_so", Ps.Mau_so) Tai_lieu.AppendChild(Goc) Tai_lieu.Save(Duong_dan)

Return Kq

End Function

Public Sub Main()

Dim Ps As PHAN_SO Ps = Nhap_phan_so()

Dim Duong_dan As String = "....Du_lieuPhan_so.xml" Ghi_phan_so(Ps, Duong_dan)

Console.ReadLine()

End Sub

End Module

- Ghi phân số VB.NET

Cách 1 : Chỉ sử dụng hàm Main

Imports System.Xml

Module Ghi_phan_so_Main

Public Sub Main()

Dim Tu_so, Mau_so As Integer

'Nhập liệu

Console.Write("Tử số:")

Tu_so = Integer.Parse(Console.ReadLine) ' Chưa kiểm tra

Console.Write("Mẩu số:")

Mau_so = Integer.Parse(Console.ReadLine) ' Chưa kiểm tra

' Tạo tài liệu Xml 

Dim Tai_lieu As New XmlDocument

Dim Goc As XmlElement = Tai_lieu.CreateElement("PHAN_SO") Goc.SetAttribute("Tu_so", Tu_so)

Goc.SetAttribute("Mau_so", Mau_so) Tai_lieu.AppendChild(Goc)

'Ghi

Dim Duong_dan As String = "....Du_lieuPhan_so.xml" Tai_lieu.Save(Duong_dan)

Console.ReadLine() End Sub

End Module

==============================

Cách 2 : Sử dụng kiểu & hàm tự định nghĩa

Imports System.Xml

Module Ghi_phan_so_Kieu_Ham

Structure PHAN_SO

Public Tu_so As Integer Public Mau_so As Integer End Structure

Public Function Nhap_phan_so() As PHAN_SO Dim Kq As PHAN_SO

Console.Write("Tử số")

Kq.Tu_so = Integer.Parse(Console.ReadLine) ' Chưa kiểm tra

Console.Write("Mẩu số")

Kq.Mau_so = Integer.Parse(Console.ReadLine) ' Chưa kiểm tra

Return Kq

End Function

Public Function Ghi_phan_so(ByVal Ps As PHAN_SO, ByVal Duong_dan As String) As Boolean

Dim Kq As Boolean = True

Dim Tai_lieu As New XmlDocument

Dim Goc As XmlElement = Tai_lieu.CreateElement("PHAN_SO") Goc.SetAttribute("Tu_so", Ps.Tu_so)

Goc.SetAttribute("Mau_so", Ps.Mau_so) Tai_lieu.AppendChild(Goc) Tai_lieu.Save(Duong_dan)

Return Kq

End Function

Public Sub Main()

Dim Ps As PHAN_SO Ps = Nhap_phan_so()

Dim Duong_dan As String = "....Du_lieuPhan_so.xml" Ghi_phan_so(Ps, Duong_dan)

Console.ReadLine() 

End Sub

End Module

- Ghi phân số C#

Cách 1 : Chỉ sử dụng hàm Main

using System;

using System.Xml;

public class Ghi_phan_so_Main

{

public static void Main()

{

int Tu_so, Mau_so;

// Nhập liệu

Console.Write ("Tử số:");

Tu_so =int.Parse (Console.ReadLine() ) ; // Chưa xử lý lỗi

Console.Write("Mẩu số:");

Mau_so =int.Parse (Console.ReadLine() ) ; // Chưa xử lý lỗi

// Tạo nội dung tài liệu Xml

XmlDocument Tai_lieu = new XmlDocument(); XmlElement Goc=Tai_lieu.CreateElement ("PHAN_SO"); Goc.SetAttribute ("Tu_so",Tu_so.ToString ()); Goc.SetAttribute ("Mau_so",Mau_so.ToString ()); Tai_lieu.AppendChild (Goc) ;

// Ghi tài liệu Xml

String Duong_dan = "....Du_lieuPhan_so.xml"; Tai_lieu.Save (Duong_dan) ;

Console.ReadLine();

}

}

======================

Cách 2 : Sử dụng kiểu & hàmtự định nghĩa

using System;

using System.Xml;

public class Ghi_phan_so_Kieu_Ham

{

public struct PHAN_SO

{

public int Tu_so; // > 0

public int Mau_so; // > 0

}

public static void Main()

{

PHAN_SO Ps;

Ps = Nhap_phan_so();

String Duong_dan = "....Du_lieuPhan_so.xml";

if (Ghi_phan_so(Ps, Duong_dan)) Console.Write("Đã ghi ");

else

Console.Write("Lỗi khi ghi "); Console.ReadLine();

}

public static PHAN_SO Nhap_phan_so()

{

PHAN_SO Kq; Console.Write("Tử số:");

Kq.Tu_so = int.Parse(Console.ReadLine()); // Chưa xử lý lỗi

Console.Write("Mẩu số:");

Kq.Mau_so = int.Parse(Console.ReadLine()); // Chưa xử lý lỗi return Kq;

}

public static Boolean Ghi_phan_so(PHAN_SO Ps, String Duong_dan )

{

Boolean Kq = true;

XmlDocument Tai_lieu = new XmlDocument();

XmlElement Goc = Tai_lieu.CreateElement("PHAN_SO"); Goc.SetAttribute("Tu_so", Ps.Tu_so.ToString()); Goc.SetAttribute("Mau_so", Ps.Mau_so.ToString()); Tai_lieu.AppendChild(Goc);

// Ghi tài liệu Xml

Tai_lieu.Save(Duong_dan);

return Kq;

}

}

* Ghi đường tròn

Imports System.Xml

Module Ghi_duong_tron

Structure DIEM

Public x As Double Public y As Double End Structure

Structure DUONG_TRON Public Tam As DIEM

Public Ban_kinh As Double

End Structure

Public Function Nhap_duong_tron() As DUONG_TRON Dim Kq As DUONG_TRON

Console.Write("Hoành độ tâm:")

Kq.Tam.x = Double.Parse(Console.ReadLine) ' Chưa kiểm tra

Console.Write("Tung độ tâm:")

Kq.Tam.y = Double.Parse(Console.ReadLine) ' Chưa kiểm tra

Console.Write("Bán kính :")

Kq.Ban_kinh = Double.Parse(Console.ReadLine) ' Chưa kiểm tra

Return Kq

End Function

Public Function Ghi_duong_tron(ByVal Dt As DUONG_TRON, ByVal Duong_dan As String) As

Boolean

Dim Kq As Boolean = True

Dim Tai_lieu As New XmlDocument

Dim Goc As XmlElement = Tai_lieu.CreateElement("DUONG_TRON") Goc.SetAttribute("Ban_kinh", Dt.Ban_kinh)

Tai_lieu.AppendChild(Goc)

Dim Nut As XmlElement = Tai_lieu.CreateElement("DIEM") Nut.SetAttribute("x", Dt.Tam.x)

Nut.SetAttribute("y", Dt.Tam.y) Goc.AppendChild(Nut) Tai_lieu.Save(Duong_dan) Return Kq

End Function

Public Sub Main()

Dim Dt As DUONG_TRON Dt = Nhap_duong_tron()

Dim Duong_dan As String = "....Du_lieuDuong_tron.xml" Ghi_duong_tron(Dt, Duong_dan)

Console.ReadLine() 

End Sub

End Module

* Ghi dãy số

Imports System.Xml

Module Ghi_day_so

Public Function Nhap_day_so() As ArrayList Dim Kq As New ArrayList Console.Write("Dãy số")

Dim Chuoi As String = Console.ReadLine

Dim M As String() = Chuoi.Split(",") ' Chưa kiểm tra For Each Con As String In M Kq.Add(Integer.Parse(Con)) ' Chưa kiểm tra

Next Return Kq End Function

Public Function Ghi_day_so(ByVal a As ArrayList, ByVal Duong_dan As String) As Boolean

Dim Kq As Boolean = True

Dim Tai_lieu As New XmlDocument

Dim Goc As XmlElement = Tai_lieu.CreateElement("DAY_SO") Tai_lieu.AppendChild(Goc)

For Each So As Integer In a

Dim Nut As XmlElement = Tai_lieu.CreateElement("SO") Nut.SetAttribute("Gia_tri", So)

Goc.AppendChild(Nut) Next Tai_lieu.Save(Duong_dan)

Return Kq

End Function

Public Sub Main()

Dim a As ArrayList a = Nhap_day_so()

Dim Duong_dan As String = "....Du_lieuDay_so.xml" Ghi_day_so(a, Duong_dan)

Console.ReadLine() 

End Sub

End Module

Giới thiệu chung về các bài tập

Biểu diễn thông tin với Xml

* Tam giác

Yêu cầu :

Biểu diễn thông tin tam giác ABC với A(1,0) , B(-8,3), C(4,4) với Xml

* Đa thức

Yêu cầu :

Biểu diễn thông tin đa thức

P(x) = 4x5 -7x3 +2x2 +4 với Xml

P(x)= 4x5−7x3+2x2+4 size 12{4x rSup { size 8{5} } - 7x rSup { size 8{3} } +2x rSup { size 8{2} } +4} {} với XML

* Ma trận

Yêu cầu :

Biểu diễn thông tin ma trận các số nguyên

với Xml

* Bảng điểm danh

Yêu cầu :

Biểu diễn thông tin bảng điểm danh

Bảng điểm danh học sinh lớp !0A Tháng 11/2007

Họ tên Vắng có phép Vắng không phép

...

....

với Xml

* Bàn cờ carô

Yêu cầu :

Biểu diễn thông tin về các quân cờ của một bàn cờ carô

Hướng dẫn :

Sử dụng tập tin Caro.xml với thẻ gốc BAN_CO

* Sơ đồ ghế

Yêu cầu :

Biểu diễn thông tin về sơ đồ ghế của một sân khấu biểu diễn bất ký ( Ví dụ Idecaf, Hòa Bình, Nhà văn hóa quận 1, Nhà hát thành phố, v.v..)

Hướng dẫn :

* Bảng lịch tàu thống nhất

Yêu cầu :

Biểu diễn thông tin về bảng lịch tàu thống nhất

Đây là bài tập khó dành cho các sinh viên tự xếp mình vào loại khá, giỏi

* Sơ đồ các chuyến bay nội địa

Yêu cầu :

Biểu diễn thông tin về sơ đồ các chuyến bay nội địa của VN

Đây là bài tập khó dành cho các sinh viên tự xếp mình vào loại giỏi

Lập trình với DOM

* Tính giá trị đơn thức

Yêu cầu :

Viết chương trình tính giá trị đơn thức P(x) =axn ( có thông tin đuợc lưu trữ duới dạng tập tin Xml ) với x0 cho trước

Hướng dẫn thiết kế chương trình :

Biểu diễn thông tin :

- Bô nhớ phụ :

Sử dụng tập tin Xml với một thẻ duy nhất DON_THUC ( gồm 2 thuộc tính )

- Bô nhớ chính : Sử dụng 3 biến

P : DON_THUC

x0 : Số thực

Kq : Số thực

với DON_THUC là kiểu cấu trúc gồm 2 thành phần

Biểu diễn xử lý :

Sử dụng các hàm sau

Hàm xử lý chính Main

Khai báo các biến P,x0,Kq

P = Dữ liệu đọc từ tập tin Xml

x0 = Dữ liệu nhập từ người dùng

Kq = Giá trị của P với x0

Xuất Kq

Hàm Doc_don_thuc

Tham số : Chuỗi Duong_dan đến tấp tin Xml

Kết quả : Đon thức tương ứng

Hàm Nhap_so_thuc

Tham số : Chuỗi Ghi_chu

Kết quả : Số thực nhập từ người dùng

Ham Gia_tri

Tham số : Đơn thức P, Giá trị x0

Kết quả : Giá trị của P với x0

VB.NET

Imports System.Xml

Module Tinh_gia_tri_don_thuc_Kieu_Ham

Structure DON_THUC Public He_so As Double

Public So_mu As Integer ' >=0

End Structure

Public Sub Main()

Dim Duong_dan As String = "....Du_lieuDon_thuc.xml" Dim P As DON_THUC

Dim x0 As Double

Dim Kq As Double

' Đọc đơn thức

' Nhập x0

' Tính Kq

' Xuất Kq

End Sub

Public Function Doc_don_thuc(ByVal Duong_dan As String) As DON_THUC Dim Kq As DON_THUC

' Đọc dữ liệu của tập tin vào đối tượng Tai_lieu XmlDocument

' Gán giá trị của kết quả từ gốc của Tai_lieu

Return Kq

End Function

Public Function Gia_tri(ByVal P As DON_THUC, ByVal x0 As Double) As Double

Dim Kq As Double

Kq = P.He_so * Math.Pow(x0, P.So_mu) Return Kq

End Function

Public Function Chuoi_don_thuc(ByVal P As DON_THUC) As String

Dim Kq As String = ""

Kq &= P.He_so & "x^" & P.So_mu ' Chưa xem xét các trường hợp đặc biệt

Return Kq

End Function

Public Function Nhap_so_thuc(ByVal Ghi_chu As String) As Double

Dim Kq As Double

Console.Write(Ghi_chu)

Kq = Double.Parse(Console.ReadLine) ' Chưa xử lý lỗi

Return Kq End Function End Module

C#

using System;

using System.Xml;

public class Tinh_gia_tri_don_thuc_Kieu_Ham

{

public struct DON_THUC

{

public Double He_so;

public int So_mu; // > 0

}

public static void Main()

{

String Duong_dan = "....Du_lieuDon_thuc.xml";

DON_THUC P; Double x0;

Double Kq;

// Đọc đơn thức P

// Nhập giá trị x0

// Tính Kq

// Xuất Kq

}

public static DON_THUC Doc_don_thuc(String Duong_dan )

{

DON_THUC Kq;

// Đọc dữ liệu của tập tin vào đối tượng Tai_lieu XmlDocument

// Gán giá trị cho Kq từ nút gốc của Tai_lieu

return Kq;

}

public static Double Gia_tri(DON_THUC P, Double x0 )

{

Double Kq;

Kq = P.He_so * Math.Pow(x0, P.So_mu);

return Kq;

}

public static String Chuoi_don_thuc(DON_THUC P)

{

String Kq = ""; Kq += P.He_so; Kq += "x^";

Kq += P.So_mu; // Chưa xem xét các trường hợp đặc biệt return Kq;

}

public static Double Nhap_so_thuc(String Ghi_chu)

{

Double Kq; Console.Write(Ghi_chu);

Kq = Double.Parse(Console.ReadLine()); // Chua xem xét người dùng nhập chuỗi return Kq;

}

}

* Giải phương trình bậc 2

Yêu cầu :

Viết chương trình giải phương trình bậc 2

ax2+bx+c=0 ( a khác 0)

có thông tin đuợc lưu trữ duới dạng tập tin Xml

Hướng dẫn thiết kế chương trình : Biểu diễn thông tin

- Bô nhớ phụ :

Sử dụng tập tin Xml với một thẻ duy nhất TAM_THUC ( gồm 3 thuộc tính )

- Bô nhớ chính : Sử dụng 3 biến

P : TAM_THUC

Ng : Mảng 1 chiều(dãy) các số thực với kích thước tối đa 2 với TAM_THUC là kiểu cấu trúc gồm 3 thành phần

Biểu diễn xử lý :

Sử dụng các hàm sau

Hàm xử lý chính Main

Khai báo các biến P,Ng

P = Tam thức đọc từ tập tin Xml

Ng = Nghiệm của P

Chuoi = Chuỗi tương ứng nghiệm Ng

Xuất Chuoi

Hàm Doc_tam_thuc

Tham số : Chuỗi Duong_dan đến tấp tin Xml

Kết quả : Tam thức tương ứng

Hàm Giai_phuong_trinh

Tham số : Tam thức P

Kết quả : Mảng 1 chiều(dãy) các số thực với kích thước tối đa 2

Ham Chuoi_nghiem

Tham số : Mảng 1 chiều(dãy) các số thực với kích thước tối đa 2

Kết quả : Chuỗi tương ứng

VB.NET

Imports System.Xml

Module Giai_phuong_trinh_bac_2_Kieu_Ham

Structure TAM_THUC

Public a As Double ' khác 0

Public b As Double Public c As Double End Structure

Public Sub Main()

Dim Duong_dan As String = "....Du_lieuTam_thuc.xml" Dim P As TAM_THUC

Dim Ng As New ArrayList

' Đọc tam thức P

' Tính nghiệm Ng

' Xuất nghiệm Ng

End Sub

Public Function Doc_tam_thuc(ByVal Duong_dan As String) As TAM_THUC Dim Kq As TAM_THUC

Dim Tai_lieu As New XmlDocument

Tai_lieu.Load(Duong_dan) ' Chưa xử lý lỗi

Dim Goc As XmlElement = Tai_lieu.DocumentElement

Kq.a = Goc.GetAttribute("a") Kq.b = Goc.GetAttribute("b") Kq.c = Goc.GetAttribute("c") Return Kq

End Function

Public Function Giai_phuong_trinh(ByVal P As TAM_THUC) As ArrayList

Dim Kq As New ArrayList

Dim Delta As Double = P.b * P.b - 4 * P.a * P.c

' Tính nghiệm và đưa vào Kq dựa trên xét dấu của Delta

Return Kq

End Function

Public Function Chuoi_tam_thuc(ByVal P As TAM_THUC) As String

Dim Kq As String = ""

Kq &= String.Format("{0}x^2 + {1}x +{2}", P.a, P.b, P.c)

' Chưa xem xét trình bày số âm, 0

Return Kq

End Function

Public Function Chuoi_nghiem(ByVal Ng As ArrayList) As String

Dim Kq As String = "" If Ng.Count = 0 Then

Kq = "Phương trình vô nghiệm" ElseIf Ng.Count = 1 Then

Kq = String.Format("Phương trình có nghiệm kép x1=x2={0:F2}", Ng(0)) ElseIf Ng.Count = 2 Then

Kq = String.Format("Phương trình có 2 nghiệm x1={0:F2} , x2={1:F2}", Ng(0), Ng(1)) End If

Return Kq End Function End Module

C#

using System;

using System.Xml;

using System.Collections; // Khai báo thư viện hàm cho phép sử dụng

ArrayList

public class Giai_phuong_trinh_bac_2_kieu_ham

{

public struct TAM_THUC

{

public Double a; // Khác 0

public Double b;

public Double c;

}

public static void Main()

{

String Duong_dan = "....Du_lieuTam_thuc.xml"; TAM_THUC P;

ArrayList Ng;

// Đọc tam thức P

// Tính nghiệm Ng

// Xuất nghiệm Ng

}

public static TAM_THUC Doc_tam_thuc(String Duong_dan)

{

TAM_THUC Kq;

XmlDocument Tai_lieu = new XmlDocument(); Tai_lieu.Load(Duong_dan); // Chưa xử lý lỗi XmlElement Goc = Tai_lieu.DocumentElement; Kq.a = Double.Parse(Goc.GetAttribute("a")); Kq.b = Double.Parse(Goc.GetAttribute("b")); Kq.c = Double.Parse(Goc.GetAttribute("c")); return Kq;

}

public static ArrayList Giai_phuong_trinh(TAM_THUC P)

{

ArrayList Kq = new ArrayList();

Double Delta = P.b * P.b - 4 * P.a * P.c;

// Tính nghiệm và đưa vào Kq dựa trên xét đấu của Delta

return Kq;

}

public static String Chuoi_tam_thuc(TAM_THUC P)

{

String Kq = "";

Kq = String.Format("{0}x^2 + {1}x + {2}", P.a, P.b, P.c);

// Chưa xem xét các trường hợp đặc biệt return Kq;

}

public static String Chuoi_nghiem(ArrayList Ng )

{

String Kq = "";

if (Ng.Count == 0)

Kq = "Phương trình vô nghiệm";

else if (Ng.Count == 1)

Kq = String.Format("phương trình có nghiệm kép x1=x2={0:F2}", Ng[0]);

else if (Ng.Count == 2)

Kq = String.Format("phương trình có 2 nghiệm x1{0:F2} , x2={1:F2}", Ng[0],Ng[1]);

return Kq;

}

}

* Tính giá trị hàm số

Yêu cầu :

Viết chương trình tính giá trị hàm số f(x)

f(x) = (a1x2+b1x+c1) /(a2x2+b2x+c2)

có thông tin được lưu trữ duới dạng tập tin Xml với x0 cho trướ

Hướng dẫn thiết kế chương trình : Biểu diễn thông tin :

- Bô nhớ phụ :

Sử dụng tập tin Xml với thẻ gốc HAM_SO bao gồm 2 thẻ conTAM_THUC

- Bô nhớ chính : Sử dụng 3 biến f : HAM_SO x0 : Số thực Kq : Số thực

với HAM_SO là kiểu cấu trúc gồm 2 thành phần tương ứng với 2 tam thức P,Q Biểu diễn xử lý :

Sử dụng các hàm sau

Hàm xử lý chính Main

Khai báo các biến f,x0,Kq

f = Hàm số đọc từ tập tin Xml

x0 = Dữ liệu nhập từ người dùng

Kq = Giá trị của f với x0

Xuất Kq

Hàm Doc_ham_so

Tham số : Chuỗi Duong_dan đến tấp tin Xml

Kết quả : Hàm số tương ứng

Hàm Nhap_so_thuc

Tham số : Chuỗi Ghi_chu

Kết quả : Số thực nhập từ người dùng

Ham Gia_tri

Tham số : Hàm số f , Giá trị x0

Kết quả : Giá trị của f với x0

* Tính tiền thuê phòng

Yêu cầu :

Viết chương trình tính tiến thuê phòng khi biết số ngày thuê lọai phòng dựa trên bảng đơn giá đã đuợc lưu trữ dưới dạng tập tin Xml

Hướng dẫn thiết kế chương trình : Biểu diễn thông tin :

- Bô nhớ phụ :

Sử dụng tập tin Bang_don_gia.Xml với thẻ gốc BANG_DON_GIA bao gồm các thẻ con

LOAI_PHONG ( có các thuộc tính Ten, Don_gia )

- Bô nhớ chính : Sử dụng 3 biến

Bdg: Mảng 1 chiều( dãy) các LOAI_PHONG So_ngay_thue : Số nguyên >0

ChI_so : Số nguyên tương ứng số thứ tự của loại phòng thuê trong Bdg

( Chi_so>=0 và Chi_so < Số các loại phòng) Tien_phai_tra : Số nguyên

với LOAI_PHONG là kiểu cấu trúc

0