這幾天狂看關于讀寫XML檔案方面的資料,雖然XML比MSSQL友善,不用安裝資料庫服務軟體,也不用附加資料庫等操作,但XML畢竟不适合做大的資料存儲,因為每當查詢讀取XML檔案時都要先讀取它到資料集然後再進行查詢(MSSQL是先查詢資料,再把查詢結果存到資料集),這在無形中占用了一點記憶體,也失去了一些效率,這在XML檔案比較大的時候效果很明顯。
是以XML一般用作配置檔案用,它的作用也不容小視。學習如何高效率得讀寫XML檔案是.NET程式員必學的技術。
在.NET中很好得提供了對XML的支援,除了二進制讀取方式和DOM方式之外還有ADO.NET,通過DataSet載入XML并利用XML的“SQL語句”——Xpath查詢可以很友善得進行一些操作。
首先我們的XML檔案内容如下:
檔案名稱為sample.xml。
現在要讀取特定節點的值,在VS2008裡面建立一個控制台程式,敲入如下代碼:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml; //必須要引入的命名空間
using System.Data; //必須要引入的命名空間
namespace ADOXML
{
class Program
{
static void Main(string[] args)
{
DataSet ds = new DataSet(); //建一個DataSet對象用來讀取XML
ds.ReadXml("sample.xml");
XmlDataDocument xdd = new XmlDataDocument(ds);
XmlElement xe;
foreach (DataRow dr in ds.Tables["message"].Rows)
{
xe = xdd.GetElementFromRow(dr);
XmlNode xn = xe.SelectSingleNode("/messages/message[@id='7836735']"); //Xpath用處就在這裡
foreach (XmlNode xn1 in xn.ChildNodes)
{
if ((xn1.NodeType == XmlNodeType.Element) && (xn1.Name == "sender"))
{
Console.WriteLine(xn1.InnerText.ToString());
}
}
//Console.Write(xn.r.Value);
Console.ReadKey();
}
}
}
}
結果為:Eileen