ASP.NET XML查找 之 XPath的封裝[ 一 ]

首先我們知道或不知道 利用XPathDocument對象Create出來的XpathNavigator是無法存儲的,只能是Xmldocument對象Create出來的..

 

最終目的:1至N個XML文檔 只需要一個方法名--查找表達式--參數?-- 執行指定命令

 

要封裝一個比較簡單的類 還是需要下點功夫的...

 

先分析一下

 

第一步無非就是加載 XML 文檔,有了文檔才能操作...

 

第二步通過XMLdocument來創建一個遊標模型(XPathNavigator)

 

第三步 開始封裝 增刪改查....

 

其實這裏的 第一步 和 第二步 用一個方法就行了,那就是初始化,試想一下 如果我操作的不知是一個XML文檔 而是多個怎麼辦?

 

你一定會想到或不一定會想到,那就是用鍵值對兒~~~ 恩 就是泛型的Dictionary,下面我用了兩個鍵值對兒~!

 

鍵值對1:文檔(集合)控制器 Dictionary<String,XmlDocument>   用來提供創建遊標模型 及對文檔的IO操作

 

鍵值對2:遊標控制器 Dictionary<String,XPathNavigator> 文檔控制器創建的遊標模型

 

代碼如果

 

//文檔控制器

 static Dictionary<String, XmlDocument> DomCollection;

 

//遊標控制器
 static Dictionary<String, XPathNavigator> navigator;

 

//初始化方法                           //這裏的參數也是一個鍵值對 稍後解釋
    public static void InitData(Dictionary<String,String> collection)
        {


            if (DomCollection == null)

                DomCollection = new Dictionary<string, XmlDocument>();

            if (navigator == null)

                navigator = new Dictionary<string, XPathNavigator>();

            try
            {

                 //循環傳進來的鍵值對
                foreach (KeyValuePair<String, String> k in collection)
                {

                    // 如果已經存在不再繼續
                      if (DomCollection.ContainsKey(k.Key)) continue;

 

                    // 否則 實例XMLdocument 並加載傳入鍵值對當前的值
                    XmlDocument xml = new XmlDocument();
                     // 值就是一個路徑
                    xml.Load(k.Value);
                   //創建遊標模型控制器 
                    XPathNavigator nav = xml.CreateNavigator();

 

                    //這裏文檔控制器 和遊標模型的鍵是一樣的,看到這裏爲什麼一樣,

                    //你可以想象一下在使用的時候是什麼樣子的
                    DomCollection.Add(k.Key, xml);
 
                    navigator.Add(k.Key, nav);
                }
            }

            catch (Exception ex)
            {
                throw new NotImplementedException(ex.Message);
            }
        }

 

//解釋上面這個方法的傳入參數 初始化 鍵值對 collection

//其實這個參數就是一個文檔名 加文檔路徑的集合

//調用這個初始化方法 ,你只需要準備將你要操作的xml文檔用鍵值對加進來就行了,如下

 

            Dictionary<String, String> contents = new Dictionary<String, String>();                     

            contents.Add("DOC1", HttpContext.Current.Server.MapPath("a.xml"));

            contents.Add("DOC2", HttpContext.Current.Server.MapPath("b.xml"));

            contents.Add("DOC3", HttpContext.Current.Server.MapPath("c.xml"));

            contents.Add("DOC4", HttpContext.Current.Server.MapPath("d.xml"));

 

然後調用方法InitData(contents) 傳入即可....

 

看到這你在回到到上面我寫的方法再重新看一遍也許你已經知道怎麼用了

發佈了58 篇原創文章 · 獲贊 13 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章