【问题标题】:Xdocument,Descendants in C#Xdocument,C#中的后代
【发布时间】:2013-06-26 17:19:36
【问题描述】:

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

【问题讨论】:

  • 你需要先看看LINQ to XML
  • @CuongLe dạ em mới vừa tự làm quen với XML,còn đôi chổ thắc mắc。 Anhơi, theo như dòng 代码 trên thì POPULARITY là 1 节点 hả anh? dữliệut trang trang alexalưuvào ^tượxdocument,emCócáchnàoxem xem xem xem xem xem xem xml ^biếtbiếtbiếtbiếtchínhxácIchínhxácciungiccic c CcấpVàgọigọin -thếnàokh。
  • 请不要在此处使用本地语言,是的,您是对的,您可以使用 Chrome 开发工具查看或 Fiddle 从 alexa 跟踪 xml

标签: c# xml linq


【解决方案1】:

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

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

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

【讨论】:

  • @vyclarks - 从您提供的代码来看,TEXT 是一个属性。 POPULARITY 应该是一个包含其他元素的节点,.Descendants 将返回这些元素。
  • 亲爱的!如何查看带有("http://data.alexa.com/data?cli=10&dat=snbamz&url={0}", domain);的XML文件结构???
  • @vyclarks - 在var doc = XDocument.Load(url); 上放置一个断点并检查url 是什么。从那里您可以访问该文件。
  • 您好,亲爱的! if (!int.TryParse(rank, out alexaRank)) alexaRank = -1; 怎么样,我不太明白这句话:!int.TryParse(rank, out alexaRank)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多