2012-02-08 34 views
1

我有一個xml文件,將從源代碼中讀取很多次。我想知道在應用程序啓動時只能讀取一次xml文件的有效方式,然後緩存其內容,以便我可以高效快速地重用它。從Xml文件中讀取的最有效和緩存的方式

我正在使用C#4.請建議高效緩存和閱讀的最佳做法。

編輯

發現這個資源:CodeProject Article

我已經加載的XML文件到XmlDocument和使用企業庫如下緩存它,

XmlDocument xdoc = new XmlDocument(); 
xdoc.Load("MyXmlFile.XML"); 
FileDependency fileDependency=new FileDependency("MyXmlFile.XML"); 
cacheManager.Add("XConfig", xdoc, CacheItemPriority.Normal, null, fileDependency); 
+0

可能重複(http://stackoverflow.com/questions/55828/best -practices-to-parse-xml-files) – 2012-02-08 13:23:41

回答

2

讀取XML是XmlReader,請看:The most efficient way to parse Xml

並緩存使用XmlDo cument對象,並將其保存在內存:C# Best way to hold xml data

要同時使用兩種,請看:http://msdn.microsoft.com/en-us/library/a8ta6tz4.aspx

與XmlDocument的問題是閱讀,而不是操縱,操縱最好的辦法是LINQ到XML,具有性能也不錯,但不要打敗XmlReader,看看這個比較:http://www.nearinfinity.com/blogs/joe_ferner/performance_linq_to_sql_vs.html

+0

我嘗試使用企業庫緩存,並在嘗試完成後回覆給您。 – Saravanan 2012-02-09 04:45:38

+0

:我已經使用了企業庫緩存,並將代碼更新爲問題的一部分。 – Saravanan 2012-02-09 05:38:26

+1

您可以使用XmlDocument存儲文件,但不要用於加載。 XmlDocument是加載xml文件的最糟糕的方式。看看我傳給你的第四個鏈接。關於企業庫緩存,這是一個很好的使用方式,因爲有許多事情你不需要管理/創建。 – 2012-02-09 11:51:06

2

這段代碼會將文檔緩存在一個靜態的共享實例中。此代碼是不是線程安全的,你沒有說這是否是一個要求:?最佳做法來解析XML文件]的

private static XDocument _mydoc; 
public static XDocument MyDoc 
{ 
    get 
    { 
     return _mydoc ?? (_mydoc = XDocument.Parse("WellKnownXmlFile.xml"); 
    } 
} 
+0

如果文件更改,我們應該刷新緩存。我也希望以線程安全的方式做到這一點。我會嘗試EntLib緩存。將在測試後回覆給您。 – Saravanan 2012-02-09 04:46:51

+0

我已經使用企業庫緩存和代碼更新作爲問題的一部分 – Saravanan 2012-02-09 05:39:07

相關問題