如何加入两个 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
的正确实现,因为上面的代码将匹配误报,因为它不会将 类 作为单独的词进行检查。
我在 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
的正确实现,因为上面的代码将匹配误报,因为它不会将 类 作为单独的词进行检查。