Je suis usign HTML Agility Pack en C # et j'ai deux HtmlNodeCollection
. Puis-je rejoindre les deux ou existe-t-il d'autres moyens d'obtenir les deux dans un HtmlNodeCollection
?
Un:
HtmlNodeCollection butiks = doc.DocumentNode.SelectNodes("//div[contains(@class,'butik-large-image')]");
Deux:
HtmlNodeCollection butiks = doc.DocumentNode.SelectNodes("//div[contains(@class,'butik small left')]");
HtmlNodeCollection
hérite de IList<HtmlNode>
qui hérite de IEnumerable<HtmlNode>
sur lequel vous pouvez appeler la méthode d'extension Enumerable.Concat()
pour créer un nouvel énumérateur contenant les deux sources Voir Comment concaténer deux IEnumerable <T> dans un nouvel IEnumerable <T>? .
Vous pouvez également simplement sélectionner les deux ensembles de nœuds en utilisant un "ou" dans votre expression Xpath :
//div[contains(@class,'butik-large-image') or contains(@class,'butik small left')]
S'il vous plaît noter que ce contains()
attend classes données dans l'ordre donné. Si vous ne le souhaitez pas, utilisez des parenthèses et and
:
//div[contains(@class,'butik-large-image')
or
(
contains(@class,'left') and
contains(@class,'small') and
contains(@class,'butik')
)]
Voir Comment puis-je sélectionner un élément avec plusieurs classes avec Xpath? pour une bonne implémentation de cela and
, comme ci-dessus, le code va correspondre aux faux positifs car il ne vérifie pas les classes en tant que mots séparés.