2013-12-10 81 views
1

我正在使用HTMLAgilityPack解析一些HTML。我想用\n替換所有<p>標籤與\r和所有<br>標籤。真的不知道該怎麼做,這是我到目前爲止已經試過:HTML替換段落和分號

 HtmlDocument doc = new HtmlDocument(); 
     doc.LoadHtml(html); 

     var ptags = doc.DocumentNode.SelectNodes("//p"); 

     foreach (var ptag in ptags) 
     { 
      ptag.OuterHtml.Replace("<p>", "\r"); 
     } 

     var brtags = doc.DocumentNode.SelectNodes("//br"); 

     foreach (var br in brtags) 
     { 
      br.OuterHtml.Replace("<br>", "\n"); 
     } 
+0

它不起作用?問題是什麼..? –

回答

0

此功能爲我的作品:

public string ReplaceParagraph(HtmlDocument doc) 
{ 
    doc.DocumentNode.SelectNodes("p") 
     .ToList() 
     .ForEach(pNode => pNode.InnerHtml = HtmlNode.CreateNode(pNode.InnerText + "\r").InnerHtml); 
    return doc.DocumentNode.SelectNodes("//text()") 
     .Aggregate("", (current, node) => current + (" " + node.InnerText)).TrimStart(); 
} 

爲單元測試,你可以運行這樣的事情:

HtmlDocument doc = new HtmlDocument(); 
doc.LoadHtml("<p>line 1</p><p>line 2</p>"); 
var plainText = ReplaceParagraph(doc); 
Assert.IsTrue(plainText == "line 1\r line 2\r", "not equal to expected string"); 

相同的功能ReplaceParagrap可以用來代替
標籤\ n。