【问题标题】:C# Best way to hold xml dataC# 保存 xml 数据的最佳方式
【发布时间】:2011-12-02 12:11:14
【问题描述】:

我正在从 Web 服务请求数据并接收一个 xml 文件。不要淹没该服务,好主意是缓存/存储 xml,因此当应用程序再次启动时,它将使用该缓存的 xml。接收到的 xml 中的数据将每 24 小时更改一次,因此从旧请求应用程序经过该时间后,无论如何都必须创建新的。

保存这些数据的最佳解决方案是什么?

编辑:也许使用 SQLite 来保留一些历史记录?

【问题讨论】:

  • 问题不在于我尝试了什么。问题是关于获得一些想法什么是做到这一点的好方法!

标签: c# caching


【解决方案1】:

您可以将其流式传输到文件中:

/// saving it :
System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
System.IO.File.WriteAllText(filename, doc.Value);

/// loading it back in :
System.Xml.XmlDocument xdoc = new System.Xml.XmlDocument();
xdoc.LoadXml(System.IO.File.ReadAllText(filename));

【讨论】:

  • 是的,这可能是最常见的解决方案,但也许还有更好的解决方案.. (:
  • 我认为您需要完善您的问题。有几种方法可以做到这一点,但“最佳”取决于您的要求。在您的场景中,什么对您最重要?
【解决方案2】:

如果我对您的理解正确,您可以考虑将数据加载到 XmlDocumentXDocument 并使用 CacheDependency 将其存储在缓存中:

XmlDocument xDoc = new XmlDocument(); 

if (Cache.Get("MenuData") == null) 
{ 
    xDoc.Load(Server.MapPath("/MenuData.xml")); 
    Cache.Insert("SiteNav", xDoc, new CacheDependency(Server.MapPath("/MenuData.xml"))); 
} 
else 
{ 
    xDoc = (XmlDocument)HttpContext.Current.Cache.Get("MenuData"); 
} 

【讨论】:

  • 虽然是一个很好的解决方案,但这不会在应用程序重新启动之间持续存在。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-19
  • 2012-04-18
  • 2013-01-08
  • 2011-09-14
  • 2015-10-15
  • 1970-01-01
  • 2021-11-16
相关资源
最近更新 更多