2009-10-17 7 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