天天看點

ADO.NET結合XPath查詢讀取資料庫

這幾天狂看關于讀寫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

繼續閱讀