我有以下代码来获取alexa页面排名。
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 :(得分:0)
我建议您导航到代码中的url
,然后查看XML
文件结构。您应该会看到包含POPULARITY
和TEXT
的标记,通过代码的外观,这些是您选择的节点/属性/值。
.Descendants
会返回一个集合,因为您提供了POPULARITY
,它会带回XML文件中<POPULARITY>
标记内的元素。
然后,您正在查看其后代为Collection
的{{1}}中的每个节点,并选择属性为Popularity
的项目。返回找到的第一个值,如果集合不包含属性为TEXT
的节点,则返回null。