Ich verwende Html Agility Pack, um XPath-Abfragen auf einer Webseite auszuführen. Ich möchte die Zeilen in einer Tabelle finden, die ein bestimmtes interessantes Element enthalten. Im folgenden Beispiel möchte ich die zweite Zeile abrufen.Xpath-Abfrage, um Elemente zu finden, die einen bestimmten Nachkommen enthalten
<table name="important">
<tr>
<td>Stuff I'm NOT interested in</td>
</tr>
<tr>
<td>Stuff I'm interested in</td>
<td><interestingtag/></td>
<td>More stuff I'm interested in</td>
</tr>
<tr>
<td>Stuff I'm NOT interested in</td>
</tr>
<tr>
<td>Stuff I'm NOT interested in</td>
</tr>
</table>
Ich suche so etwas zu tun:
//table[@name='important']/tr[has a descendant named interestingtag]
Außer mit gültiger XPath-Syntax. ;-)
Ich nehme an, ich könnte einfach das interessante Element selbst finden und mich dann die Elternkette von dem Knoten hocharbeiten, der zurückkehrt, aber es schien, als müsste es einen Weg geben, dies in einem Schritt zu tun und ich bin nur dicht.
oder, @ Mirod Weg würde auch funktionieren. :-) –
Ausgezeichnet. Das ist sehr hilfreich. Entschuldigung, ich kann zwei Antworten nicht akzeptieren! –
Ich finde es immer lustig, wie viele Möglichkeiten es gibt, um das gewünschte Ergebnis in XPath zu bekommen. Ich glaube // table [@ name = 'wichtig'] // interestingtag // ancestor :: tr sollte auch funktionieren, glaube ich. – mirod