我正在使用HTMLAgilityPack
来解析一些HTML。我想将所有<p>
代码替换为\r
,将所有<br>
代码替换为\n
。不确定如何做到这一点,这是我到目前为止所尝试的:
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。
替换