Ich benutze HTML Agility Pack in C # und ich habe zwei HtmlNodeCollection
. Kann ich beiden beitreten oder gibt es andere Möglichkeiten, beide in eine HtmlNodeCollection
zu HtmlNodeCollection
?
Ein:
HtmlNodeCollection butiks = doc.DocumentNode.SelectNodes("//div[contains(@class,'butik-large-image')]");
Zwei:
HtmlNodeCollection butiks = doc.DocumentNode.SelectNodes("//div[contains(@class,'butik small left')]");
HtmlNodeCollection
erbt IList<HtmlNode>
, das IEnumerable<HtmlNode>
erbt, auf dem Sie die Erweiterungsmethode Enumerable.Concat()
aufrufen können, um ein neues Enumerable.Concat()
zu erstellen, das beide Quellen enthält. Siehe Wie verkette ich zwei IEnumerable <T> zu einem neuen IEnumerable <T>? .
Sie können auch beide Knotengruppen auswählen, indem Sie in Ihrem Xpath-Ausdruck ein "oder" verwenden :
//div[contains(@class,'butik-large-image') or contains(@class,'butik small left')]
Bitte beachten Sie, dass dies contains()
erwartet Klassen in der angegebenen Reihenfolge. Wenn Sie das nicht möchten, verwenden Sie Klammern und and
:
//div[contains(@class,'butik-large-image')
or
(
contains(@class,'left') and
contains(@class,'small') and
contains(@class,'butik')
)]
Siehe Wie kann ich ein Element mit mehreren Klassen mit Xpath auswählen? für eine ordnungsgemäße Implementierung von diesem and
, wie oben Code wird falsch positive entsprechen, weil es nicht für die Klassen als separate Wörter überprüft.