我正在使用HTML Agility Pack在 C# 中,我有两个 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创建一个包含两个源的新枚举。请参阅How to concatenate two IEnumerable<T> into a new IEnumerable<T>? .
您也可以通过 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# - 如何连接两个 HtmlNodeCollection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32541356/