【问题标题】:How to save and read a xml file from another website?如何从另一个网站保存和读取 xml 文件?
【发布时间】:2016-01-30 07:39:49
【问题描述】:

我有这个链接:http://www.bnro.ro/nbrfxrates.xml 指向一个包含每日货币的 xml 文件。

我想将此 xml 保存在我网站 ex 的文件夹中。 (〜/内容/CurrencyXml)。

我想每天保存它,当用户第一次访问我的网站时(必须替换旧文件)。

我还想在一个静态方法中读取它,该方法返回一个具有每种货币类型(如属性)的对象,以便像这样访问它:

price=model.Eur * 100;

你能帮我举个例子,说明如何保存这个 xml 的副本以及如何阅读它吗?

【问题讨论】:

  • 参见 XDocument 类。您可以使用 Load 方法下载 xml 并使用 Save 将其保存在本地文件夹中。
  • 为什么不创建一个简单的 Windows 服务来每天执行一次该任务。网上有很多关于如何下载和保存 xml 的示例,例如 WebClient、HttpWebRequest。我不确定您将如何每天检查它,但为了不影响性能太多,为什么每次用户访问您的网站时检查标志文件是否存在,如果不存在,请创建它。如果是,请检查日期和时间,如果超过 24 小时,请再次请求数据。
  • @Thierry - 感谢您的评论,我现在正在寻找教程以了解如何制作和使用 Windows 服务。

标签: c# xml asp.net-mvc


【解决方案1】:

你可以试试这样的方法来读取文件并保存

public void readFile()
{
       XmlDocument document = new XmlDocument();
       document.Load("http://www.bnro.ro/nbrfxrates.xml");
       document.Save(Path.Combine(
       Server.MapPath("~/Content/CurrencyXml"),"myFile.xml"));
}

在这里您可以找到非常有用的信息:

XmlDocument Microsoft

【讨论】:

    【解决方案2】:

    这里是一个windows服务的例子:

    Walkthrough: Creating a Windows Service Application in the Component Designer

    这是一个如何使用 WebClient 下载 xml 的示例:

    How can I download an XML file using C#?

    以下是如何将文件保存到服务器的示例:

    C# save files to folder on server instead of local

    然后使用@Augustin 的建议。

    如果您确实使用标志文件方案,我建议您将 xml 文件保存到一个临时文件中,并且只有在完全下载后,覆盖您的原始文件并确保处理锁定、覆盖时间等...另一个解决方案是使用一个保存当前文件名的临时变量,当你下载一个新文件时,只需给它一个新名称,下载时,将该变量名设置为新文件名,并确保你的加载函数使用该变量和从新文件名加载数据。不要忘记删除您的旧文件,但至少可以避免锁定问题(如果有的话),您以后可以随时尝试再次删除该文件。

    如果您的网站是否全天候 24/7 访问,这将在很大程度上取决于您的网站。如果不是,则问题不大,因为当您知道该文件未被使用时,您可以使用 Windows 服务下载该文件。如果您使用 Windows 服务,则在使用时,与上述相同。如果您使用的是 Azure,则可以使用 WebJob。我相信有很多不同的解决方案可以解决这个问题,您只需找到满足您需求的解决方案即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-28
      • 1970-01-01
      • 1970-01-01
      • 2011-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多