2017-06-11 2 views
0

Ich muss Text auswählen, der ein <a> Tag mit Xpath enthält, aber ich kann den richtigen Weg nicht herausfinden, dies zu tun. Das Ergebnis sollte "Bildunterschrift und ein Link" sein. und die Ankerverbindung sollte erhalten bleiben.Wählen Sie Text, der Tag mit Xpath enthält

<p class="caption"><img src="..."> 
Image Caption <a href="...">And A Link</a>. 
</p> 

Der letzte Ausdruck habe ich versucht wurde nach,

//*[preceding-sibling::img] 

aber egal, wie ich es tun, wähle ich entweder nur die äußere oder einfach nur den Text aus der <a>-Tag.

+0

Welche Art von XPath-Ergebnis wollen Sie, welche XPath-API verwenden Sie? Sie sagen, dass Sie "Text auswählen müssen" und das Ergebnis sollte "Image Caption And A Link" sein, was eine einfache Zeichenfolge ist, aber Sie sagen auch, dass der "Anker Link beibehalten werden soll", der so klingt, wie Sie dort nicht wollen String, sondern der 'a'-Elementknoten zurückgegeben. –

Antwort

0

Sie können nicht auswählen, was nicht vorhanden ist. "Image Caption And A Link." ist in diesem HTML nicht vorhanden.

<p class="caption"><img src="..."> 
Image Caption <a href="...">And A Link</a>. 
</p> 

Am besten Sie ist eine Liste von separaten Knoten bekommen - es sieht aus wie Sie alle Knoten innerhalb eines p.caption außer wollen, wenn es ein img. Dies würde funktionieren:

//p[contains(@class, 'caption')]/node()[not(self::img)] 

und drei Knoten zurück:

['\nImage Caption ', <a href="...">And A Link</a>, '.\n'] 

Zum Schutz gegen Fehlalarme in CSS-Klassen aufgrund teilweise Übereinstimmungen passenden, verwendet

//p[contains(concat(' ', @class, ' '), ' caption ')] 
Verwandte Themen