2009-10-17 17 views
11

Birisi bana bu programın neden herhangi bir öğe numaralandırmadığını söyler mi? RDF ad alanı ile ilgisi var mı?XML için LINQ: bir XPath uygulama

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(); 
    } 
} 

cevap

16

Evet, kesinlikle ad hakkında - bu RSS ad değil, RDF biri olmasına rağmen. Ad alanı olmayan öğeleri bulmaya çalışıyorsunuz. NET'te XPath'de bir ad kullanarak

biraz daha karmaşık olur, ancak bu durumda sadece XML yerine Descendants yöntemi LINQ kullanmak istiyorum:

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

Kazananını kazanan, tavuk yemeği. – core

+1

C# içinde RDF, RSS ve ATOM çözümlerinin tam bir örneğini burada bulabilirsiniz http://www.jarloo.com/rumormill-5/ ayrıca tam kaynak kodu mevcuttur. – Kelly

İlgili konular