列表<uri>如何获取其内容?</uri>

时间:2013-04-21 13:34:00

标签: c# asp.net html-agility-pack

我有以下类使用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. 如果我想从代码中的其他地方调用它,我应该如何编写列表中的所有uris? - 已回答

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

2 个答案:

答案 0 :(得分:2)

列表的第一项:

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

循环:

foreach (var uri in getLinks())
{
    // do the job
}

答案 1 :(得分:0)

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

matchString = Regex.Match(((Property)e.Item.FindControl("Property4")).Text, "<img.+?src=[\"'](.+?)[\"'].+?>", RegexOptions.IgnoreCase).Groups[1].Value;//image src