我在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')]");
答案 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')
)]
,因为上述代码会与误报相匹配,因为它不会将这些类检查为单独的单词。