如何加入两个HtmlNodeCollections

c# html-agility-pack xpath

我在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()扩展方法来创建包含两个源的新枚举。请参见如何将两个IEnumerable <T>连接成一个新的IEnumerable <T>?

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

//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 ,因为上面的代码将匹配误报,因为它不会将类检查为单独的单词。



许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因