Заменить изображения альтернативным текстом HTML-пакет гибкости - PullRequest
1 голос
/ 22 июня 2011

Мне нужно проанализировать HTML для изображений и заменить эти теги новым тегом, в котором есть только текст, содержащийся в альтернативе.Может кто-нибудь показать, как это сделать с использованием linq и стандартного использования?

Я использовал образец linq для замены абзацевНо я получаю сообщение об ошибке только для чтения.

    HtmlDocument doc = new HtmlDocument();
    doc.LoadHtml(html);      
    IEnumerable<HtmlNode> paragraphs = doc.DocumentNode.DescendantNodes().Where(p => p.Name.ToLower() == "p");
    foreach (HtmlNode p in paragraphs)
    {
        p.InnerText = "Hello World";
    }

Также существует ли простой способ перевести его обратно в текст?Т.е. вывод в виде строки

Это то, что у меня не работает

MemoryStream outStream = new MemoryStream();
doc.Save(outStream);


outStream.Seek(0, SeekOrigin.Begin);
StreamReader reader = new StreamReader( outStream );
string text = reader.ReadToEnd();

1 Ответ

2 голосов
/ 22 июня 2011
var images = doc.DocumentNode.SelectNodes("//img");
if (images != null)
{
    foreach (HtmlNode image in images)
    {
        var alt = image.GetAttributeValue("alt", "");
        var nodeForReplace = HtmlTextNode.CreateNode(alt);
        image.ParentNode.ReplaceChild(nodeForReplace, image);
    }
}

var sb = new StringBuilder();
using (var writer = new StringWriter(sb))
{
    doc.Save(writer);
}
...