XPath zum Auffinden einer Zelle mit einem bestimmten text Parsen von HTML-Tabellen
Hoffe jemand da draußen kann schnell zeigen Sie mich in die richtige Richtung mit meiner XPath Schwierigkeiten.
Aktuellen habe ich bis zu dem Punkt, wo ich bin, erkennen der richtigen Tabelle muss ich in meinen HTML-Quelltext habe ich dann aber verarbeiten müssen nur die Zeilen, die den text "Kapitel" irgendwo in der DOM.
Mein letzten Versuch war, dies zu tun :
//get the correct table
HtmlTable table = page.getFirstByXPath("//table[2]");
//now the failing bit....
def rows = table.getByXPath("*/td[contains(text(),'Chapter')]")
Dachte ich, dass der xpath-oben darstellen würde, kommen mir alle Elemente, die ein Folgendes Kind-element von 'td', dass irgendwo in seinen dom enthält den text 'Kapitel'
Ein Beispiel von eine übereinstimmende Zeile von meine Quelle ist :
<tr valign="top">
<td nowrap="" align="Right">
<font face="Verdana">
<a href="index.cfm?a=1">Chapter 1</a>
</font>
</td>
<td class="ChapterT">
<font face="Verdana">DEFINITIONS</font>
</td>
<td> </td>
</tr>
Jede Hilfe /Zeiger sehr geschätzt.
Dank,
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie diese XPath:
.
und//
ist XPath verkürzte syntax..
wählt den Kontextknoten aus.//td
wählt alletd
Nachkommen des Dokument-root und damit wählt alletd
Elemente im selben Dokument wie der Kontextknoten. Reference: w3.org/TR/xpath/#path-abbrevSie möchten, dass alle
td
s unter dem aktuellen Knoten -- nicht - alle im Dokument als die derzeit akzeptierte Antwort wählt.Verwenden:
Diese wählt alle
td
Nachkommen des aktuellen Knotens mit dem Namentd
mit mindestens einem text-Knoten Nachkomme, dessen string-Wert enthält die Zeichenfolge"Chapter"
., Wenn es im Voraus bekannt ist, dass jede
td
unter diesemtable
hat nur einen einzelnen text-Knoten, dieser kann vereinfacht werden, um nur:Ihr auf dem richtigen "Weg".
Die contains () - Funktion ist begrenzt, die ein bestimmtes element, nicht Sie text in die Kinder. Versuchen Sie, diese XPath, die Sie Lesen konnte, wie folgt:
- Holen Sie sich jede tr/td mit jedem sub-element enthält den text 'Kapitel'
Glück