我有以下类使用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;
}
所以,我有以下问题:
如何从我的代码中的其他地方调用此类时,获取列表中的第一项? - 已回答。
如果我想从代码中的其他地方调用它,我应该如何编写列表中的所有uris? - 已回答
我如何调整它以便从输入字符串而不是整个文档中读取uris?
答案 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