如何加入兩個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 ,因為上面的代碼將匹配誤報,因為它不會將類檢查為單獨的單詞。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow