从 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
希望对您有所帮助!
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
希望对您有所帮助!