2013-06-26 53 views
0

我有下面的代碼來獲得alexa頁面的排名。X文檔,C後代#

private int GetAlexaRank(string domain) 
{ 
    var alexaRank = 0; 
    try 
    { 
     var url = string.Format("http://data.alexa.com/data?cli=10&dat=snbamz&url={0}", domain); 

     var doc = XDocument.Load(url); 

     var rank = doc.Descendants("POPULARITY").Select(node => node.Attribute("TEXT").Value).FirstOrDefault(); 

     if (!int.TryParse(rank, out alexaRank)) 
      alexaRank = -1; 

    } 
    catch (Exception e) 
    { 
     return -1; 
    } 

    return alexaRank; 
} 

但我真的不明白代碼是如何工作的? 你能準確的告訴我,"POPULARITY""TEXT"是什麼?他們在哪裏存儲? 我不明白這個語法:doc.Descendants("POPULARITY").Select(node => node.Attribute("TEXT").Value).FirstOrDefault(); 請!!!!

+0

您需要首先看看[LINQ to XML](http://msdn.microsoft.com/zh-cn/library/bb387098.aspx) –

+0

@CuongLedạemmớivừatựlàmquenvớiXML,còn đôichổthắcmắc。 Anhơi,theonhưdòngcodetrênthì大衆là1節hảanh? Dữliệutừtrang alexađượclưuvàođốitượngXdocument,emcócáchnàoxemđượcfile XMLđểbiếtPOPULARITYchínhxácđượccungcấpvàgọinhưthếnàokhôngạ? – vyclarks

+0

請不要在這裏使用本地語言,是的,你是對的,你可以使用Chrome開發工具來查看或Fiddle跟蹤xml從alexa –

回答

0

我建議你導航到url你有你的代碼,並看看XML文件結構。您應該看到POPULARITYTEXT的標籤,從代碼的外觀來看,這些是您選擇的節點/屬性/值。

.Descendants返回一個集合,並且由於您提供了POPULARITY,它將帶回XML文件中<POPULARITY>標記中的元素。

然後,您正在查看其後代爲Popularity並選擇屬性爲TEXT的項目的Collection中的每個節點。返回找到的第一個值;如果集合不包含具有屬性TEXT的節點,則返回null。

+0

@vyclarks - 從你提供的代碼中,'TEXT'是一個屬性。 'POPULARITY'應該是一個包含其他元素的節點,.descendants會返回這些元素。 –

+0

親愛的!我怎樣才能用'(「http://data.alexa.com/data?cli=10&dat=snbamz&url={0}」,domain)來查看XML文件結構;'??? – vyclarks

+0

@vyclarks - 在'var doc = XDocument.Load(url);'上放置一個斷點並檢查'url'是什麼。從那裏你可以到達文件。 –