我一直试图在HtmlAgilityPack
中找到一个内置的解决方案/设置。
当父节点中有<br>
时,我遇到了一些问题。其他节点也一样,但是我使用<br>
来解决这个问题。参见下面的示例。
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml("<p>This is a<br>test</p>");
var text = doc.DocumentNode.SelectNodes("//p");
foreach (var i in text)
{
Console.WriteLine(i.InnerText);
}
这将产生以下结果
This is atest
我正在寻找一种解决方案,
This is a test
是否有一个设置可以用来将<br>
节点替换为InnerText
属性中的空格,还是我被迫在加载文本之前对文本执行Replace("<br>"," ")
变成HtmlDocument
?
答案 0 :(得分:1)
您是否尝试过此方法,我认为在
之前/之后留出空间应该可以为您带来预期的结果。
<p>This is a <br> test</p>
答案 1 :(得分:0)
我相信您可以做这样的事情。
foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//br"))
node.ParentNode.ReplaceChild(doc.CreateTextNode(" "), node);
它选择<br>
节点,并将其替换为包含空格字符的文本节点。如果要保留换行符,甚至可以使用换行符。