如何加入两个 HtmlNodeCollection

How to join two HtmlNodeCollections

我在 C# 中使用 HTML Agility Pack,我有两个 HtmlNodeCollection。我可以加入两者还是有其他方法可以将两者合二为一HtmlNodeCollection?

一个:

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

两个:

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

HtmlNodeCollection 继承 IList<HtmlNode>,后者继承 IEnumerable<HtmlNode>,您可以在其上调用 Enumerable.Concat() extension method to create a new enumerable containing both sources. See How to concatenate two IEnumerable<T> into a new IEnumerable<T>?.

您也可以 select 两组节点 using an "or" in your Xpath expression:

//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')
)]

请参阅 How can I select an element with multiple classes with Xpath? 以了解 and 的正确实现,因为上面的代码将匹配误报,因为它不会将 类 作为单独的词进行检查。