首页 > 解决方案 > 从 OuterHtml 获取 TextContent

问题描述

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

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

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

谢谢!

标签: c#anglesharp

解决方案


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

如果您只想获得TextContentOP 中提到的替换,那么我建议您进行 Node 替换,然后获取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

希望有帮助!


推荐阅读