c# - 规范化 HtmlAgilityPack 中的空间
问题描述
这是html片段。如何获得规范化空间文本?
搜索相同的片段,但使用 Xpath//*[normalize-space()='Text1 Text2']
<div>
<div>
<a></a>
<a></a>
<div><a><span></span>Text2</a></div>
</div>
<div>Text2</div>
</div>
使用:
var htmlNodes = htmlDoc.DocumentNode.SelectNodes("*");
foreach (var node in htmlNodes)
{
text += node.InnerText;
}
我得到这个字符串:
"\r\n \r\n \r\n \r\n \r\n Text1\r\n Text2"
我可以得到一个正常的文本吗?
"Text1 Text2"
解决方案
您可以改用InnerText
属性:
var texts = document.DocumentNode.Descendants("div").Select(n => n.InnerText);
如果需要,可以将它们组合起来:
var combined = string.Join(" ", texts);
要过滤掉空值:
.Select(n => n.InnerText.Replace("\r\n", "")).Where(s => !string.IsNullOrEmpty(s));
推荐阅读
- javascript - Firestore:onSnapshot 重复结果
- java - Java中的子类型和泛型函数
- mysql - 我将如何将数据库迁移到云服务?
- if-statement - youcanbook.me 通知正文中的条件语句,用于测试多个变量
- arrays - 在C中对数组进行排序(边缘的小元素,中间的大元素)
- azure - Azure Application Insights 标记未显示在成本分析中
- android - 使用 Jetpack 片段导航时水平布局混乱
- css - 具有自定义颜色和间距的 Bootstrap 4 导航栏居中和样式
- android-studio - 如何在android studio中打开asset studio?
- mysql - 引起:java.sql.SQLException:无法添加外键约束