Webサイト上のXMLファイルの変更のポーリングまたは検出について質問があります。私は以下のかなりハードコーディングされたシステムを持っており、ニューヨーク連銀から毎日の証券貸付に関するXMLファイルを読み取ります。それはうまく機能していて、私はそれで問題はありません。私の主な質問は、平日の変更についてWebサイトをどのようにポーリングするかです。XMLファイルの「LastModified」フィールド(この場合は「Prepared」フィールド)を確認できることは理解していますが、実際に変更が加えられたときにこれを行う方法に興味があります。 XMLサイトでは、私のコンピューターは新しいXMLファイルを自動的にロードして解析します。この情報が出たらすぐに入手することは私にとって非常に重要であるため、X分ごとにポーリングすることは私が望むほどうまく機能しません。何か案は?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Xml;
using System.IO;
using System.Xml.Linq;
using System.Diagnostics;
namespace ConsoleApplication2 {
class Program {
static void Main(string[] args) {
// XML text reader stuff
//XmlReader textReader = XmlReader.Create("http://www.newyorkfed.org/markets/seclend/xml/v3_0/secLendingXML.cfm");
XmlTextReader textReader = new XmlTextReader("http://www.newyorkfed.org/markets/seclend/xml/v3_0/secLendingXML.cfm");
//SyndicationFeed feed = SindicationFeed.Load(textReader);
//XmlTextReader textReader = new XmlTextReader("LOCATION");
//string[] Fed_Array = new string[] {"Actual Available to Borrow", "Outstanding Loans",
//"Par Submitted", "Par Accepted", "WTD Average Rate"};
int j = 0;
int icount = 0;
using(StreamWriter writer = new StreamWriter("LOCATION"))
//using (StreamWriter writer = new StreamWriter("LOCATION"))
while (textReader.Read()) {
switch (textReader.NodeType) {
case XmlNodeType.Element:
for (int i = 0; i < textReader.AttributeCount; i++) {
textReader.MoveToAttribute(i);
switch (textReader.Name) {
case "securityMaturityDate":
string textvalmatd = textReader.Value;
if (i == 0 && icount == 0) {
writer.Write("N/A,");
Console.Write("N/A,");
icount = 1;
i = -1;
} else {
writer.Write(textvalmatd + ",");
Console.Write(textvalmatd + ",");
icount = 0;
}
break;
case "couponRate":
string textvalcoup = textReader.Value;
writer.Write(textvalcoup + ",");
Console.Write(textvalcoup + ",");
break;
case "securityType":
string textvalsec = textReader.Value;
writer.Write(textvalsec + ",");
Console.Write(textvalsec + ",");
j = 0;
break;
case "value":
string textval = textReader.Value;
writer.Write(textval + ",");
Console.Write(textval + ",");
j = j + 1;
if (j > 4) {
writer.Write(Environment.NewLine);
Console.Write(Environment.NewLine);
}
break;
}
}
break;
}
}
}
private static IDisposable StreamWriter(string p) {
throw new NotImplementedException();
}
}
}