2011-10-19 35 views
2

繼續從我以前的問題(http://stackoverflow.com/questions/7817619/unknown-error-using-digg-api-and-uri-handler-silverlight,我想感謝你回答)我現在有一個跟進較少的錯誤問題。XML to LINQ與Digg API

要從this中提取數據,我們將以下XML轉換爲LINQ代碼。

var stories = from story in document.Descendants("story") 
        //where story.Element("thumbnail") != null 
        select new DiggStory 
        { 
         Id = (string)story.Attribute("story_id"), 
         Title = (string)story.Element("title"), 
         Description = (string)story.Element("description"), 
         ThumbNail = (string)story.Element("thumbnail").Attribute("src"), 
         //HrefLink = (string)story.Attribute("permalink"), 
         NumDiggs = (int)story.Attribute("diggs") 
        }; 

這按預期工作,但看到Digg的API是過時的,我寧願成爲新的API,它創建the following XML file

現在我想知道如何調整XML到LINQ代碼來利用這個新的XML文件? 我知道問題出在

var stories = from story in document.Descendants("story") 

但我不知道我需要將其更改爲,因爲new XML file有更多的層次。我在想這件事

var stories = from item in document.Descendants("stories") 

但這似乎不工作。

我想再次感謝你幫助我解決這個問題和任何進一步的問題,這真是一個很棒的網站!

謝謝,托馬斯

回答

1

開始與此:

var stories = from item in document.RootElement.Element("stories").Descendants("item") 
       select new DiggStory 
       { 
        Id = item.Element("story_id").Value 
        // ...etc 
       } 

您可以瞭解更多有關解析XML文檔與LINQ to XML。對你來說特別有用的可能是XElement documentation,它顯示了爲XML文檔中每個「元素」(標記)定義的所有方法和屬性。