繁体   English   中英

Xdocument,C#的后代

[英]Xdocument,Descendants in C#

我有以下代码来获取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(); 请!!!!

我建议您导航到代码中的url ,然后看一下XML文件结构。 通过代码的外观,您应该看到带有POPULARITYTEXT标签,这些是您选择的节点/属性/值。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM