如何加入两个 HtmlNodeCollections

本文关键字:两个 HtmlNodeCollections 何加入 | 更新日期: 2023-09-27 18:12:24

我是 C# 中的 HTML 敏捷包,我有两个HtmlNodeCollection。我可以同时加入两者还是有其他方法可以在一个HtmlNodeCollection中同时加入两者?

一:

HtmlNodeCollection butiks = doc.DocumentNode.SelectNodes("//div[contains(@class,'butik-large-image')]");

二:

HtmlNodeCollection butiks = doc.DocumentNode.SelectNodes("//div[contains(@class,'butik small left')]");

如何加入两个 HtmlNodeCollections

HtmlNodeCollection继承IList<HtmlNode>继承IEnumerable<HtmlNode>,您可以在其中调用Enumerable.Concat()扩展方法来创建包含两个源的新枚举。请参阅如何将两个 IEnumerable 连接到新的 IEnumerable?。

您也可以通过在 Xpath 表达式中使用"or"来选择两组节点:

//div[contains(@class,'butik-large-image') or contains(@class,'butik small left')]

请注意,这contains()期望给定的类按给定的顺序排列。如果您不想这样做,请使用括号和and

//div[contains(@class,'butik-large-image') 
or 
( 
    contains(@class,'left') and
    contains(@class,'small') and
    contains(@class,'butik')
)]

请参阅如何使用 Xpath 选择具有多个类的元素?以正确实现该and,因为上面的代码将匹配误报,因为它不会将类作为单独的单词进行检查。