如何加入两个HtmlNodeCollections

时间:2015-09-12 16:54:58

标签: c# xpath html-agility-pack

我在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')]");

1 个答案:

答案 0 :(得分:2)

HtmlNodeCollection继承了继承IList<HtmlNode>的{​​{1}},您可以在其上调用Enumerable.Concat() extension method来创建包含两个来源的新枚举。请参阅How to concatenate two IEnumerable<T> into a new IEnumerable<T>?

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

IEnumerable<HtmlNode>

请注意,此//div[contains(@class,'butik-large-image') or contains(@class,'butik small left')] 期望按给定顺序列出给定的课程。如果您不想要,请使用括号和contains()

and

请参阅How can I select an element with multiple classes with Xpath?以正确实施//div[contains(@class,'butik-large-image') or ( contains(@class,'left') and contains(@class,'small') and contains(@class,'butik') )] ,因为上述代码会与误报相匹配,因为它不会将这些类检查为单独的单词。