0

我有下面的代码来获得 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"and "TEXT"?它们存储在哪里?我不明白这个语法:doc.Descendants("POPULARITY").Select(node => node.Attribute("TEXT").Value).FirstOrDefault(); 拜托!!!!

4

1 回答 1

0

我建议您导航到url代码中的内容并查看XML文件结构。您应该看到带有POPULARITY和的标签TEXT,从代码的外观来看,这些是您选择的节点/属性/值。

.Descendants返回一个集合,并且由于您提供POPULARITY它,它将带回<POPULARITY>XML 文件中标记内的元素。

Collection然后,您将查看Descendants are中的每个节点Popularity并选择具有属性的项目TEXT。您返回找到的第一个值,如果集合不包含具有属性的节点,则返回 null TEXT

于 2013-06-26T09:14:18.690 回答