从 OuterHtml 获取 TextContent

Get TextContent from OuterHtml

Textcontent 在某些情况下返回没有空格的文本(我使用的是控制台应用程序),所以我想确保它确实如此。我想知道是否有办法用新行替换每个 <br>,然后从修改后的 OuterHTML 中获取 TextContent?

  var posts_value = Posts.Select(m => m.OuterHtml.Replace("<br>",Environment.NewLine));

我得到了想要的结果,但不确定如何从上面获取 TextContent?

谢谢!

好吧,如果您正在寻找更接近浏览器呈现的文本的字符串,请尝试使用 AngleSharp.Css 附带的 GetInnerText 扩展方法。

如果您只想获得 TextContent 和 OP 中提到的替换,那么我建议进行节点替换,然后获得 TextContent.

async Task Main()
{
    var config = Configuration.Default;
    var context = BrowsingContext.New(config);
    var document = await context.OpenAsync(res => res.Content("<div>hello<br>there</div>"));
    var before = document.Body.TextContent;
    
    foreach (var br in document.QuerySelectorAll("br"))
    {
        br.Replace(document.CreateTextNode("\n"));
    }
    
    var after = document.Body.TextContent;
    
    before.Dump();
    after.Dump();
}

结果是

hellothere
hello
there

希望对您有所帮助!