2009-02-01 5 views
1

답이없는 질문 목록을 the feed에서 얻으려고하는데 읽는 데 문제가 있습니다.스택 오버플로 읽기 RSS 피드

const string RECENT_QUESTIONS = "https://stackoverflow.com/feeds"; 

XmlTextReader reader; 
XmlDocument doc; 

// Load the feed in 
reader = new XmlTextReader(RECENT_QUESTIONS); 
//reader.MoveToContent(); 

// Add the feed to the document 
doc = new XmlDocument(); 
doc.Load(reader); 

// Get the <feed> element 
XmlNodeList feed = doc.GetElementsByTagName("feed"); 

// Loop through each item under feed and add to entries 
IEnumerator ienum = feed.GetEnumerator(); 
List<XmlNode> entries = new List<XmlNode>(); 
while (ienum.MoveNext()) 
{ 
    XmlNode node = (XmlNode)ienum.Current; 
    if (node.Name == "entry") 
    { 
     entries.Add(node); 
    } 
} 

// Send entries to the data grid control 
question_list.DataSource = entries.ToArray(); 

"코드를 수정하십시오"라는 질문을 게시하는 것이 싫지만 실제로 붙어 있습니다. 몇 가지 자습서 (일부는 컴파일 오류가 발생)를 시도했지만 아무런 도움이되지 않습니다. XmlReaderXmlDocument을 사용하여 올바른 방법으로 가고 있다고 가정합니다. 각 가이드의 공통점이었습니다.

+0

어떤 오류가 발생하고 어떤 오류가 발생하는지 말할 수 있습니까? – mmcdole

+1

http://msdn.microsoft.com/en-us/library/system.servicemodel.syndication.syndicationfeed.aspx 을 대신 사용해보십시오. – Brian

+0

@Simucal : 그것은 단지 어떤 데이터도 제공하지 않으며, 오류도 없습니다. @ 브라이언 : 나는 그것을 보았고 그것이 사료만을 만들기위한 것이라고 생각했습니다. 나는 그것을 시도 할 것이다. – Ross

답변

4

열거 자 ienum에는 요소, <feed> 요소 만 포함되어 있습니다. 이 노드의 이름이 entry이 아니기 때문에 entries에 아무 것도 추가되지 않습니다.

대신 <feed> 요소의 자식 노드를 반복하고 싶습니다. 다음을 시도해보십시오.

const string RECENT_QUESTIONS = "http://stackoverflow.com/feeds"; 

XmlTextReader reader; 
XmlDocument doc; 

// Load the feed in 
reader = new XmlTextReader(RECENT_QUESTIONS); 
//reader.MoveToContent(); 

// Add the feed to the document 
doc = new XmlDocument(); 
doc.Load(reader); 

// Get the <feed> element. 
XmlNodeList feed = doc.GetElementsByTagName("feed"); 
XmlNode feedNode = feed.Item(0); 

// Get the child nodes of the <feed> element. 
XmlNodeList childNodes = feedNode.ChildNodes; 
IEnumerator ienum = childNodes.GetEnumerator(); 

List<XmlNode> entries = new List<XmlNode>(); 

// Iterate over the child nodes. 
while (ienum.MoveNext()) 
{ 
    XmlNode node = (XmlNode)ienum.Current; 
    if (node.Name == "entry") 
    { 
     entries.Add(node); 
    } 
} 

// Send entries to the data grid control 
question_list.DataSource = entries.ToArray(); 
+0

감사합니다. 지금 XML 노드를 반복하는 방법을 이해하게되었습니다. – Ross