为什么总是有一个空字符串在这个HtmlNodeCollection结束

本文关键字:HtmlNodeCollection 结束 字符串 有一个 为什么 | 更新日期: 2023-09-27 18:18:18

我编写了一个方法,它将返回来自堆栈溢出问题的所有标记。唯一的问题是集合中的最后一项总是一个空字符串。

private static async Task<IEnumerable<string>> GetQuestionTags(string url)
{
    var document = await Task.Factory.StartNew(() => new HtmlWeb().Load(url));
    var nodes = document.DocumentNode.SelectNodes("//*[@id='"question'"]/table//tr[1]/td[2]/div/div[2]//a");
    return nodes.Select(node => node.InnerText);
}

可以每次都简单地删除集合中的最后一项,但我不想这样做。

为什么总是有一个空字符串作为集合中的最后一个项目,我怎么能不检索该项目?

为什么总是有一个空字符串在这个HtmlNodeCollection结束

将我的评论转换为回答…

您可以使用谓词中的normalize-space()过滤掉空元素,即只包含空格或根本不包含空格的元素:

var xpath = "//*[@id='question']/table//tr[1]/td[2]/div/div[2]//a[normalize-space()]";
var nodes = document.DocumentNode.SelectNodes(xpath);
相关文章:
  • 没有找到相关文章