wie XML-Knoten unter Verwendung von in der Nähe Elemente auszuwählen
-
16-09-2019 - |
Frage
Mit XPath und das HTML Agility Pack Ich brauche den destination
Text mit color:#ff00ff
auszuwählen.
Meine HTML sieht wie folgt aus:
<table>
<tr style="color:#ff00ff">
<td></td>
</tr>
<tr>
<td>destination</td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td>not destination</td>
</tr>
</table>
Lösung
/table/tr[@style = "color:#ff00ff"]/following-sibling::tr[1]/td[1]/text()
Wählt den <tr>
die style="color:#ff00ff"
hat, und von dort geht, wird der Text des ersten <td>
Kind des ersten folgenden <tr>
.
Für zusätzliche Sicherheit können Sie verwenden:
tr[translate(@style, ' ', '') = "color:#ff00ff"]
Dies entfernt alle Leerzeichen aus dem Attributwert, also die Dinge ein wenig unabhängiger von der HTML-Quelle erhalten.
Andere Tipps
jQuery verwenden, es könnte wie folgt aussehen:
$('tr[style*="color:#ff00ff"]').next('tr').children().text();
Dies ist stark abhängig von Ihrer genauen Dokumentstruktur und Stildefinition, though. Es wird jede tr finden, die einen Stil mit der Zeichenfolge „color: # ff00ff“ hat (genau, keine Leerzeichen, etc.). Aus dieser Reihe wählen sie dann die nächste Geschwisterreihe und die Textinhalte von allen bekommen davon direkte Kinder. In Ihrem Fall wäre dies das einzige Spalte Element sein.