Я предлагаю использовать утилиту, предложенную ThomasP, а затем связать ее с процессом сборки. Внешний файл все еще присутствует, чтобы содержать текст, но файл не читается во время выполнения. Тогда рабочий процесс выглядит следующим образом:
class TextBlock {...
, за которым следует статическая строка, которая автоматически генерируется из файла ресурсов string matchString = Regex.Match(original_text, "<img.+?src=[\"'](.+?)[\"'].*?>", RegexOptions.IgnoreCase).Groups[1].Value;
Я попробовал то, что предложил Франциско Норьега, но похоже, что API-интерфейс для HtmlAgilityPack был изменен. Вот как я это решил:
List<string> images = new List<string>();
WebClient client = new WebClient();
string site = "http://www.mysite.com";
var htmlText = client.DownloadString(site);
var htmlDoc = new HtmlDocument()
{
OptionFixNestedTags = true,
OptionAutoCloseOnEnd = true
};
htmlDoc.LoadHtml(htmlText);
foreach (HtmlNode img in htmlDoc.DocumentNode.SelectNodes("//img"))
{
HtmlAttribute att = img.Attributes["src"];
images.Add(att.Value);
}
Это должно захватывать все теги img и только часть src независимо от того, где он находится (до или после класса и т. Д.) И поддерживает html / xhtml: D
<img.+?src="(.+?)".+?/?>
Это то, что я использую, чтобы получить теги из строк:
</? *img[^>]*>