-2

我有以下类,它使用 HtmlAgilityPack 从当前页面/文档创建 uri 列表。

public List<Uri> getLinks() 
{
    var linksOnPage = from lnks in doc.DocumentNode.Descendants()
                      where lnks.Name == "a" &&
                           lnks.Attributes["href"] != null &&
                           lnks.InnerText.Trim().Length > 0
                      select new
                          {
                              Url = lnks.Attributes["href"].Value,
                          };

    List<Uri> Uris = new List<Uri>();

    foreach (var link in linksOnPage)
    {
        Uri baseUri = new Uri(urlBase, UriKind.Absolute);
        Uri page = new Uri(baseUri, link.Url.ToString());
        Uris.Add(page);
    }

    return Uris;
}

所以,我有以下问题:

  1. 从代码中的其他地方调用此类时,如何获取列表中的第一项?- 回答。

  2. 例如,当我从代码中的其他地方调用它时,如果我希望将它们写出来,我该如何循环遍历列表中的所有 uri?- 已回答

  3. 我该如何调整它以便它从输入字符串而不是整个文档中读取 uri?

4

2 回答 2

2

列表的第一项:

var first = getLinks().FirstOrDefault(); // null if the list is empty

依次通过:

foreach (var uri in getLinks())
{
    // do the job
}
于 2013-04-21T14:40:03.080 回答
0

我意识到实现我的目标更简单的方法是:

matchString = Regex.Match(((Property)e.Item.FindControl("Property4")).Text, "<img.+?src=[\"'](.+?)[\"'].+?>", RegexOptions.IgnoreCase).Groups[1].Value;//image src
于 2013-04-21T20:34:47.297 回答