Самый эффективный и кэшированный способ чтения из файлов XML - PullRequest
1 голос
/ 08 февраля 2012

У меня есть XML-файл, который будет прочитан много раз из исходного кода. Я хотел бы знать эффективный способ, которым я могу только один раз [при запуске приложения] прочитать файл xml, а затем кэшировать его содержимое, чтобы я мог использовать его быстро и эффективно.

Я использую C # 4. Пожалуйста, предложите лучшие практики для эффективного кэширования и чтения.

EDIT

Найден этот ресурс: Статья CodeProject

Я загрузил XML-файл в XmlDocument и кэшировал его с помощью Enterprise Library следующим образом:

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

Ответы [ 2 ]

2 голосов
/ 08 февраля 2012

Этот код будет кэшировать документ в статическом, совместно используемом экземпляре. Этот код не является потокобезопасным, вы не сказали, требовалось ли это:

private static XDocument _mydoc;
public static XDocument MyDoc 
{
   get 
   {
      return _mydoc ?? (_mydoc = XDocument.Parse("WellKnownXmlFile.xml");
   }
}
2 голосов
/ 08 февраля 2012

Чтобы прочитать xml - это XmlReader, посмотрите: Самый эффективный способ синтаксического анализа Xml

И для кэширования используйте объект XmlDocument и сохраняйте его в памяти: C # Лучший способдля хранения данных XML

Чтобы использовать их вместе, посмотрите: http://msdn.microsoft.com/en-us/library/a8ta6tz4.aspx

Проблема с XmlDocument состоит в том, чтобы читать, а не манипулировать, лучший способ манипулировать - это Linq to Xml, которая также имеет хорошую производительность, но не побеждает XmlReader, посмотрите это сравнение: http://www.nearinfinity.com/blogs/joe_ferner/performance_linq_to_sql_vs.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...