2011-06-22 53 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

我更新了將文檔保存爲字符串的答案。 –