在ADO.NET中的XML支持主要用于DataSet对象,因为XML主要关注所有的关系和分层的结构化数据。DataSet具有7个方法可以用于处理XML,其中最易于使用的方法是WriteXml(),它将数据集的内容以XML文档的形式写出。WriteXml()可以将XML写到不同的目标上。将XML作为输入格式接收的外部程序可以很容易的读取和处理XML。
ReadXml()方法也可以用于将XML文件的内容读取到DataSet中。
下面为举例代码:
using System;
using System.Data;
using System.DataSqlClient;
class DataXmlExample{
public static void Main(){
//Specify SQL Server-specific connection string
SqlConnection thisConnection = new SqlConnection(
@"Data Source=(local);Integrated Security=SSPI;Initial Catalog=northwind");
thisConnection.Open();
DataSet thisDataSet = new DataSet();
SqlDataAdapter custAdapter = new SqlDataAdapter("SELECT * FROM Customers",thisConnection);
custAdapter.Fill(thisDataSet,"Customers");
SqlDataAdapter orderAdapter = new SqlDataAdapter("SELECT * FROM Orders",thisConnection);
orderAdapter.Fill(thisDataSet,"Orders");
SqlDataAdapter detailAdapter = new SqlDataAdapter("SELECT * FROM [Order Details]",thisConnection);
detailAdapter.Fill(thisDataSet,"Order Details");
DataRelation custOrderRel = thisDataSet.Relations.Add("CustOrders",thisData.Tables["Customers"].Columns["CustomerID"],thisData.Tables["Orders"].Columns["CustomerID"]);
custOrderRel.Nested = true;
DataRelation orderDetailRel = thisDataSet.Relations.Add("OrderDetail",thisData.Tables["Orders"].Columns["OrderID"],thisData.Tables["Order Details"].Columns["OrderID"]);
orderDetailRel.Nested = true;
thisDataSet.WriteXml(@"c:/tmp/nwinddata.xml");
Console.WriteLine(@"Successfully wrote XML output to file c:/tmp/nwinddata.xml");
thisConnection.Close();
}
}
DataRelation对象的Nested属性通知WriteXml()方法,将订单细节和订单嵌套在XML输出中的每个父顾客之下。文件nwinddata.xml包含数据库中的所有数据。
<注:>本文参考文献
《C#入门经典》清华大学出版社