Cần lưu trữ cấu hình hoặc dữ liệu dạng nhẹ, dễ đọc, không cần cơ sở dữ liệu.
Dữ liệu ít thay đổi và dễ quản lý bằng tay (ví dụ: file cấu hình app.config, web.config).
Cần trao đổi dữ liệu giữa các hệ thống khác nhau theo chuẩn chung (ví dụ: Web Services SOAP).
Muốn serialize/deserialize đối tượng sang XML để lưu trữ hoặc truyền đi.
Làm việc với dữ liệu dạng cây có cấu trúc rõ ràng, như tài liệu hoặc menu.
DataTable dt = new DataTable();
// cấu trúc 1 biến DataTable
// Nhiều dòng , nhiều cột, có kiểu dữ liệu tương ứng cho mỗi cột
//thêm cột
dt.Columns.Add("STT", typeof(int));
dt.Columns.Add("HoTen", typeof(string));
//thêm row
dt.Rows.Add(1,"A");
dt.Rows.Add(2, "B");
//
dt.Namespace = "dulieu";
dt.TableName = "hocsinh";
dt.WriteXml("D:\\data.xml"); // lưu không cần cấu trúc
Kết quả XML lưu
<?xml version="1.0" standalone="yes"?>
<DocumentElement xmlns="dulieu">
<hocsinh>
<STT>1</STT>
<HoTen>A</HoTen>
</hocsinh>
<hocsinh>
<STT>2</STT>
<HoTen>B</HoTen>
</hocsinh>
</DocumentElement>
DataTable dt = new DataTable();
// cấu trúc 1 biến DataTable
// Nhiều dòng , nhiều cột, có kiểu dữ liệu tương ứng cho mỗi cột
//thêm cột
dt.Columns.Add("STT", typeof(int));
dt.Columns.Add("HoTen", typeof(string));
//thêm row
dt.Rows.Add(1,"A");
dt.Rows.Add(2, "B");
//
dt.Namespace = "dulieu";
dt.TableName = "hocsinh";
dt.WriteXml("D:\\data.xml", XmlWriteMode.WriteSchema); // lưu có cấu trúc
? Có có schema để làm cái gì: để khi nạp ngược lại (file xml) vào C# chuyển sang Datatable tự động có cấu trúc giống như file xml. Xem ví dụ nạp file xml vào biến DataTable
<?xml version="1.0" standalone="yes"?>
<NewDataSet xmlns="dulieu">
<xs:schema id="NewDataSet" targetNamespace="dulieu" xmlns:mstns="dulieu" xmlns="dulieu" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" attributeFormDefault="qualified" elementFormDefault="qualified">
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:MainDataTable="dulieu_x003A_hocsinh" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="hocsinh">
<xs:complexType>
<xs:sequence>
<xs:element name="STT" type="xs:int" minOccurs="0" />
<xs:element name="HoTen" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<hocsinh>
<STT>1</STT>
<HoTen>A</HoTen>
</hocsinh>
<hocsinh>
<STT>2</STT>
<HoTen>B</HoTen>
</hocsinh>
</NewDataSet>
DataTable dtGet = new DataTable();
dtGet.ReadXml("D:\\data.xml"); // nạp file có cấu trúc
Tìm kiếm:
Trong lập trình C# việc tương tác với file XML rất hay sử dụng để lấy dữ liệu từ file xml để xử lý nghiệp vụ.