2012-05-17 4 views
2

인트라넷 용으로 간단한 내부 피드백 (RSS) 리더 (XML 사용)를 만들었습니다. ListView를 사용하여 시작하여 XmlTextReader & XmlDocument로 채 웁니다.WinForm C에서 최신 xml (URL) 가져 오기

그러나 소스 독자적인 XML 파일이 업데이트되는 즉시 내 독자 자동 새로 고침 기능을 소개하지 않으면이 독자는 유용하지 않습니다. 내가 생각할 수있는 한 가지 방법은 다음과 같습니다.

전체 파일을 가져온 다음 이전/새 ChildNodes 수를 비교합니다. new> prev 인 경우 Winform을로드하거나 새로 고칩니다. 그러나 이러한 중요하지 않은 요청을 보내는 수백 개의 클라이언트 양식은 네트워크 서버의 응답 시간을 농담으로합니다!

날짜를 비교하는 데 약간의 논리를 사용해야한다고 생각합니다. & XML 파일의 생성/업데이트 시간. 그러나 나는 오늘까지 그러한 기능을 사용 해본 적이 없다 ... 더 좋은 생각이 뭐니?

+0

도움 날짜 시간 기능에 대한 요구, 경우를 비교하는 방법 : 다음 않는 XML을 구문 분석 할 때 다음

private string fetchRSS(string url, DateTime lastUpdate){ HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.IfModifiedSince = lastUpdate; // if the file wasn't modified since the specified time it won't be fetched and an exception will be thrown try{ WebResponse response = request.GetResponse(); Stream stream = response.GetResponseStream(); StreamReader reader = new StreamReader(stream); return reader.ReadToEnd(); } // this will happen if the fetching of the file failed or the file wasn't updated return null; } 

을 인트라넷 URL의 파일이 업데이트됩니다. – gsvirdi

+0

현재 XML을 가져 오는 방법은 무엇입니까? WCF, http, ...? –

+0

ListView (내 Windows Forms)를 사용하여 시작한 다음 Csharp와 함께 XmlTextReader 및 XmlDocument로 채 웁니다. 'rssReader = new XmlTextReader (RssFile.ToString()); rssDoc = 새로운 XmlDocument(); // XML 내용을 XmlDocument rssDoc.Load (rssReader)에로드하고 'http : // 111.111.11.11/1.xml' 위치에서 RssFile을 가져옵니다. – gsvirdi

답변

0

당신은이 같은이 파일을 가져올 수 있습니다 :

DateTime lastUpdated = ... // here set the time of the last update 
string xmlContent = fetchRSS("http://111.111.11.11/1.xml", lastUpdated); 
if(xmlContent != null){ 
    rssDoc = new XmlDocument(); 
    // Load the XML content into a XmlDocument 
    rssDoc.LoadXml(xmlContent); 
}