2011-06-22 49 views
1

我需要解析HTML图像,并用只包含替代文本中包含文本的新标签替换这些标签。有人可以展示如何用linq和标准用法来做到这一点?用替代文本替换图像html敏捷包

我已经使用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(); 

回答

2
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); 
} 
+0

谢谢。你能告诉我如何将文档保存回字符串?我已经用上面的代码更新了代码。它不起作用。 –

+0

我更新了将文档保存为字符串的答案。 –