Я использую HTML ловкость пакет для разбора некоторых HTML, из которых фрагмент имеет вида:Получение узла в том же положении, в следующем собрате
<tbody>
<tr>
<td><a href="remotelink1"><img /></a></td><td></td>
<td><a href="site2"><img /></a></td><td></td>
<td><a href="link3"><img /></a></td><td></td>
<td><a href="site4"><img /></a></td><td></td>
<td><a href="link5"><img /></a></td>
</tr>
<tr>
<td style="text-align: left;" width="200" height="45">a<br>b<br>c</td><td width="17"></td>
<td style="text-align: left;" width="200">d<br>e<br>f</td><td width="57"></td>
<td style="text-align: left;" width="200">g<br>h<br>i</td><td width="57"></td>
<td width="200">j<br>k<br>l</td><td width="57"></td>
<td width="200">m<br>n<br>o</td>
</tr>
<tr>
<td><a href="link6"><img /></a></td><td></td>
<td><a href="site7"><img /></a></td><td></td>
<td><a href="remotelink8"><img /></a></td><td></td>
<td><a href="site9"><img /></a></td><td></td>
<td><a href="link10"><img /></a></td>
</tr>
<tr>
<td style="text-align: left;" width="200" height="45">p<br>q<br>r</td><td width="17"></td>
<td style="text-align: left;" width="200">s<br>t<br>u</td><td width="57"></td>
<td style="text-align: left;" width="200">v<br>w<br>x</td><td width="57"></td>
<td width="200">y<br>z<br>aa</td><td width="57"></td>
<td width="200">ab<br>ac<br>ad</td>
</tr>
Задачи Я облицовка ассоциируя каждую ячейку со строкой «ниже» (т.е. в той же позиции в следующем родстве от родительского узла). т.е. я хочу связать ссылку «remotelink1» с узлами a<br>b<br>c
и «site2» с d<br>e<br>f
и т.д.
я могу получить только клетки, не содержащие Привязок никаких проблем с:
foreach (var item in doc.DocumentNode.SelectNodes("//div[@class='entry-content']/table/tbody/tr/td[a[@href]]"))
Но я изо всех сил чтобы получить ячейку внизу, ближе я могу получить это:
var detail = item.SelectSingleNode("../following-sibling::tr/td[position()]");
Но что получает положение узла итерируемым, а не item
узла в его родителе. Можно ли использовать выражение XPath для передачи позиции исходного узла в предикат, чтобы найти ячейку под ней?
, я адаптировал принцип: 'var detail = item.Sele ctSingleNode (string.Format ("../../ next-sibling :: tr/td [position() = (count (../ previous-sibling :: tr/td [a [@href = '{0} ']]/previous-sibling :: td) + 1)] ", item.Attributes [" href "]. Значение));' –
Wicked! О, это весело –