2012-02-08 11 views
1

私は、ソースコードから何度も読み込まれるxmlファイルを持っています。私は、効率的かつ迅速に再利用できるように、[アプリケーション開始時に] XMLファイルを一度だけ読み込み、その内容をキャッシュできる効率的な方法を知りたいと思います。Xmlファイルから読み込む最も効率的かつキャッシュされた方法

私はC#4を使用しています。効率的なキャッシングと読み取りのためのベストプラクティスをお勧めします。 CodeProject Article

私はXmlDocumentオブジェクトにXMLファイルをロードし、次のようにエンタープライズライブラリを使用してキャッシュされている、

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) –

答えて

2

XMLを読み取ることである:このリソースが見つかり

EDIT

XmlReader、look:The most efficient way to parse Xml

キャッシングはXmlDo cumentオブジェクト、およびメモリに保管してください:C# Best way to hold xml data

を見て、一緒に両方を使用するには、次のXmlDocumentの問題は、読むために操作することではありませんhttp://msdn.microsoft.com/en-us/library/a8ta6tz4.aspx

を操作するための最良の方法は、LINQのは持っている、XMLにありますXmlReaderを打ち負かさないでください。http://www.nearinfinity.com/blogs/joe_ferner/performance_linq_to_sql_vs.html

+0

エンタープライズライブラリのキャッシングを使用しようとしていますが、試してみることにします。 – Saravanan

+0

:私はエンタープライズライブラリキャッシングを使用しており、コードは質問の一部として更新されています。 – Saravanan

+1

XmlDocumentを使用してファイルを格納できますが、ロードには使用しません。 XmlDocumentはXMLファイルをロードする最悪の方法です。私があなたに渡す第4のリンクを見てください。また、エンタープライズライブラリキャッシングについては、管理/作成する必要のないことがたくさんあるため、使いやすいキャッシングです。 –

2

このコードは、ドキュメントを静的な共有インスタンスにキャッシュします。このコードは、それが必要条件であったかどうか言わなかった、スレッドセーフではありません。[?xmlファイルを解析するためのベストプラクティス]の

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

ファイルが変更された場合に備えて、キャッシュを更新する必要があります。私はスレッドセーフな方法でこれを行うことを好むでしょう。私はEntLibキャッシングを試みます。テストの後にあなたに戻ってきます。 – Saravanan

+0

私はエンタープライズライブラリキャッシングを使用しており、コードは質問の一部として更新されています – Saravanan

関連する問題