-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. たとえば、コードの他の場所からこれを呼び出すときに、それらを書き出す必要がある場合、リスト内のすべての uris をループするにはどうすればよいですか? - 回答済み

  3. ドキュメント全体ではなく、入力文字列から uris を読み取るようにするにはどうすればよいですか?

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 に答える