字符串连接 HTML 子节点的内部文本

本文关键字:内部 文本 子节点 连接 HTML 字符串 | 更新日期: 2023-09-27 18:31:53

我的HTML如下所示

<h4>
<span>Cat</span>
<span>Dog</span>
<a href="xxx" class="telcat">Potatoes</a>
</h4>

我正在尝试从上面生成以下字符串,它只是由逗号连接的子元素内部文本

Cat,Dog,Potatoes

我尝试了类似的东西

 string x = String.Join(",", htmldoc.DocumentNode.SelectNodes("//h4").Elements().Select(el => el.InnerText).ToList());

但是我得到查找输出,我得到的字符串看起来像

,Cat,
,Dog,
,Potatoes,

字符串连接 HTML 子节点的内部文本

这是因为 HTML 中存在没有文本的 TextNode。不过,修复这个问题相当容易,您只需要过滤空文本即可。

这样:

 string x = String.Join(",", doc.DocumentNode
    .SelectNodes("//h4").Elements()
    .Select(el => el.InnerText)
    .Where(text => !string.IsNullOrWhiteSpace(text)));

如果你想在整个页面上都有这样的东西,我在这里发布了类似的东西。