Thao tác với file XML

Một phần của tài liệu Đề cương môn học: Công nghệ .NET ppsx (Trang 78 - 83)

2.6.1. XML là gì?

XML viết tắt của chữ eXtensible Markup Language (ngôn ngữ nâng cấp

có thể mở rộng) là một bộqui luật về cách chia một tài liệu ra làm nhiều phần,

rồi đánh dấu và ráp các phần khác nhau lại đểdễnhận diện chúng.

Tổ hợp Web toàn cầu W3C gọi XML là "một cú pháp thông dụng cho

việc biểu thị cấu trúc trong dữ liệu". Dữliệu có cấu trúc tham chiếu đến dữliệu

được gán nhãn cho nội dung, ý nghĩa, hoặc công dụng.

XML có cấu trúc giống như HTML tuy nhiên HTML sử dụng những thẻ

được định nghĩa trước (trong một tài liệu html không thể sử dụng thẻ do người dùng định nghĩa), còn trong trang XML hoàn toàn có thểsử dụng những thẻdo người dùng định nghĩa.

2.6.2. Cú pháp XML

Một trang XML phải tuân thủcác quy luật sau.

 1. Một trang XML phải bắt đầu bằng XML declaration (ví dụ: <?xml

version="1.0" encoding="utf-8" ?>)

 2. Phải có một root (gốc) Element duy nhất, gọi là Document

Element, nó chứa tất cảcác Elements khác trong tài liệu.

 3. Mỗi Child Element phải nằm trọn bên trong Element cha của nó.

 4. Mỗi opening Tag phải có một closing Tag giống như nó (Nếu Tag

nào không chứa gì ở giữa thì phải chấm dứt bằng "/>", thí dụ như

<BR/>, <HR/>…). opening Tag và closing Tag phải được đánh vần

 5. Các Tag không được xen kẽ nhau (thí dụ như <Class>TK6<Lop>TK6</Class></Lop> là bất hợp lệ vì <Lop> nằm trong Tag Class).

 6. Giá trị Attribute trong XML phải được gói giữa một cặp ngoặc

kép

2.6.3. Đọc/ghi file XML trong C#

2.6.3.1. Ghi dữliệu ra file XML

Trong C# để ghi dữ liệu ra file XML chúng ta có thể sử dụng 1 các đối tượng sau:

 XmlTextWriter

 XmlWriter

 XmlDocument

Minh họa: Để tạo trang XML SinhVien.xml có cấu trúc như bên dưới

chúng ta có thể sử dụng XmlTextWriter hay XmlDocument (trước khi sử dụng (adsbygoogle = window.adsbygoogle || []).push({});

các đối tượng này phải khai báo namespaceusingSystem.Xml;).

Trang SinhVien.xml - Sửdụng đối tượng XmlTextWriter:

XmlTextWriterxmlText =newXmlTextWriter("SinhVien.xml",null);

//Ghi chú thích

xmlText.WriteComment("Đọc ra file XML");

//Ghi dữliệu: 1 lớp có nhiều sinh viên (tên, năm sinh) xmlText.WriteStartElement("Lop");

//Bản ghi thứnhất

xmlText.WriteStartElement("SinhVien"); xmlText.WriteAttributeString("ID","1");

xmlText.WriteString("Hoàng Quốc Việt"); xmlText.WriteEndElement();//</Name> xmlText.WriteStartElement("NamSinh"); xmlText.WriteValue(1985); xmlText.WriteEndElement(); xmlText.WriteEndElement(); //Bản ghi thứ2 xmlText.WriteStartElement("SinhVien"); xmlText.WriteAttributeString("ID","2"); xmlText.WriteStartElement("Ten");

xmlText.WriteString("Nguyễn Anh Tuấn"); xmlText.WriteEndElement(); xmlText.WriteStartElement("NamSinh"); xmlText.WriteValue(1986); xmlText.WriteEndElement(); xmlText.WriteEndElement(); //Đóng file xmlText.Close();

- Sửdụng đối tượng XmlDocument

XmlDocument xmlDoc =newXmlDocument();

XmlDeclarationxmlDec = xmlDoc.CreateXmlDeclaration("1.0","utf-8",null);

//Tạo Node gốc <->Class

XmlElementLopNode = xmlDoc.CreateElement("Lop");//Root Node

xmlDoc.InsertBefore(xmlDec, xmlDoc.DocumentElement); xmlDoc.AppendChild(LopNode);

//Tạo bản ghi thứnhất

XmlElementSinhVienNode =xmlDoc.CreateElement("SinhVien"); SinhVienNode.SetAttribute("ID","1");

LopNode.AppendChild(SinhVienNode);

//Tạo 2 node con cho bản ghi thứnhất và set giá trị XmlElementTenNode = xmlDoc.CreateElement("Ten");

XmlElementNamSinhNode = xmlDoc.CreateElement("NamSinh"); TenNode.InnerText ="Hoàng Quốc Việt";

NamSinhNode.InnerText ="1985"; SinhVienNode.AppendChild(TenNode); SinhVienNode.AppendChild(NamSinhNode);

//Tạo bản ghi thứhai

XmlElementSinhVienNode2 = xmlDoc.CreateElement("SinhVien"); SinhVienNode2.SetAttribute("ID","2");

LopNode.AppendChild(SinhVienNode2);

//Tạo 2 node con cho bản ghi thứnhất và set giá trị XmlElementTenNode2 = xmlDoc.CreateElement("Ten");

XmlElementNamSinhNode2 = xmlDoc.CreateElement("NamSinh"); TenNode2.InnerText ="Nguyễn Anh Tuấn";

NamSinhNode2.InnerText ="1986"; SinhVienNode2.AppendChild(TenNode2); SinhVienNode2.AppendChild(NamSinhNode2);

//Lưu file

xmlDoc.Save(@"SinhVien.xml"); (adsbygoogle = window.adsbygoogle || []).push({});

Chú ý: việc sử dụng đối tượng XmlWriterhoàn toàn tương tự như việc sử dụng đối tượng XmlTextWriter

2.6.3.2. Đọc dữliệu từfile XML

Để đọc dữ liệu từ file xml chúng ta có thể sử dụng một trong các đối tượng sau:

 XmlTextReader

 XmlReader

Minh họa: Đọc nội dung của file SinhVien.xml ở trên và hiển thị thông tin (tên, năm sinh) của từng sinh viên (MessageBox). Ở đây chúng ta sử dụng đối tượng XmlTextReader. Việc sử dụng đối tượng XmlReader là hoàn toàn tương tự.

stringstrSinhVien ="";

stringstrTenNode ="";

//

XmlTextReaderread =newXmlTextReader("SinhVien.xml");

//

while(read.Read()) {

switch(read.NodeType) {

caseXmlNodeType.Element: strTenNode = read.Name;

break;

caseXmlNodeType.Text:

switch(strTenNode) {

case"Ten":

strSinhVien += read.Value;

strSinhVien +=",";//Hai thông tin ngăn cách nhau bởi dấu , break;

case"NamSinh":

strSinhVien += read.Value;

MessageBox.Show(strSinhVien);//In từng bản ghi

strSinhVien =""; break; } break; } }

Một phần của tài liệu Đề cương môn học: Công nghệ .NET ppsx (Trang 78 - 83)