2009-10-17 4 views
11

누군가이 프로그램이 항목을 열거하지 않는 이유를 말해 줄 수 있습니까? RDF 네임 스페이스와 관련이 있습니까?LINQ to XML : XPath 적용

using System; 
using System.Xml.Linq; 
using System.Xml.XPath; 

class Program 
{ 
    static void Main(string[] args) 
    { 
     var doc = XDocument.Load("http://seattle.craigslist.org/sof/index.rss"); 

     foreach (var item in doc.XPathSelectElements("//item")) 
     { 
      Console.WriteLine(item.Element("link").Value); 
     } 

     Console.Read(); 
    } 
} 

답변

16

예, RDF가 아닌 RSS 네임 스페이스이지만 네임 스페이스에 관한 것입니다. 네임 스페이스가없는 항목을 찾으려고합니다. .NET에서의 XPath에서 네임 스페이스를 사용

약간 까다 롭습니다하지만,이 경우 그냥 XML 대신 Descendants 방법 LINQ를 사용하십시오 :

using System; 
using System.Linq; 
using System.Xml.Linq; 

class Test 
{ 
    static void Main() 
    { 
     var doc = XDocument.Load("http://seattle.craigslist.org/sof/index.rss"); 
     XNamespace rss = "http://purl.org/rss/1.0/"; 

     foreach (var item in doc.Descendants(rss + "item")) 
     { 
      Console.WriteLine(item.Element(rss + "link").Value); 
     } 

     Console.Read(); 
    } 
} 
+5

우승자 우승자, 닭고기 저녁 식사를. – core

+1

C#에서 RDF, RSS 및 ATOM을 구문 분석하는 완전한 예제는 http://www.jarloo.com/rumormill-5/ 전체 소스 코드에서도 볼 수 있습니다. – Kelly