2017-05-13 1 views
-1

Keine Ahnung, die beiden Ausdrücke in einen XPath zu zementieren. Sie fallen beide unter die gleiche Klasse "Paginierung". Ich muss das in einer Schleife verwenden. Ich habe versucht, getrennt wie folgt aus:Wie zwei XPath-Ausdrücke in einen zu zementieren?

//div[@class='pagination']//a/@href 
//div[@class='pagination']//a[contains(@class,'next')]/@href 

Elemente für den Ausdruck:

<div class="pagination"><p><span>Showing</span>1-30 
of 483<span>results</span></p><ul><li><span class="disabled">1</span></li><li><a href="/search?search_terms=pizza&amp;geo_location_terms=Los%20Angeles%2C%20CA&amp;page=2" data-page="2" data-analytics="{&quot;click_id&quot;:132,&quot;module&quot;:1,&quot;listing_page&quot;:2}" data-remote="true" data-impressed="1">2</a></li><li><a href="/search?search_terms=pizza&amp;geo_location_terms=Los%20Angeles%2C%20CA&amp;page=3" data-page="3" data-analytics="{&quot;click_id&quot;:132,&quot;module&quot;:1,&quot;listing_page&quot;:3}" data-remote="true" data-impressed="1">3</a></li><li><a href="/search?search_terms=pizza&amp;geo_location_terms=Los%20Angeles%2C%20CA&amp;page=4" data-page="4" data-analytics="{&quot;click_id&quot;:132,&quot;module&quot;:1,&quot;listing_page&quot;:4}" data-remote="true" data-impressed="1">4</a></li><li><a href="/search?search_terms=pizza&amp;geo_location_terms=Los%20Angeles%2C%20CA&amp;page=5" data-page="5" data-analytics="{&quot;click_id&quot;:132,&quot;module&quot;:1,&quot;listing_page&quot;:5}" data-remote="true" data-impressed="1">5</a></li><li><a href="/search?search_terms=pizza&amp;geo_location_terms=Los%20Angeles%2C%20CA&amp;page=2" data-page="2" data-analytics="{&quot;click_id&quot;:132}" data-remote="true" class="next ajax-page" data-impressed="1">Next</a></li></ul></div> 

Antwort

1

Es gibt viele Möglichkeiten, wie Sie zwei XPath-Ausdrücken kombinieren. Eine Möglichkeit besteht beispielsweise darin, den Vereinigungsoperator "|" zu verwenden. Ob Sie den richtigen Operator verwenden, hängt davon ab, was Sie erreichen möchten. Leider vergessen Sie, uns zu sagen, was Sie erreichen möchten, damit dies nicht der richtige Operator für Ihre Zwecke ist.

+0

Danke Sir Michael Kay, für Ihre Antwort. Ich wollte xpath so schreiben, dass es beide Arten von Seitenumbruch abdeckt. Das Gegenteil von dem, was ich will, ist: "// div [@ class = 'Paginierung'] // a [nicht (@class)]/@ href" – SIM

+0

Meinst du das zu sagen? Nun, es funktioniert, aber ich wollte die Ausdrücke so kombinieren, dass es prägnant aussieht. [// div [@ class = 'Seitenumbruch'] // a/@ href | // div [@ Klasse = 'Seitenumbruch'] // a [enthält (@ Klasse, 'ajax-Seite')]/@ href] – SIM

+1

Sie haben einen Pfadausdruck, der X zurückgibt, und einen anderen Pfadausdruck, der Y zurückgibt. Was soll der kombinierte Pfadausdruck zurückgeben? Der Vereinigungsoperator gibt alle Knoten zurück, die entweder durch X oder Y ausgewählt wurden. Alternativen sind der Operator "intersect", der alles zurückgibt, was sowohl für X als auch für Y der Operator "comma" (Verkettung) ist usw ... Ohne zu wissen, was Sie erreichen möchten, können wir Ihnen nicht sagen, welcher Operator verwendet werden soll. –

Verwandte Themen