Я изо всех сил пытался создать XPath, чтобы дать мне узлы-братья от известного узла до пустого узла FIRST или последнего узла . Данные выглядят так:
<table width="100%" border="0" cellpadding="2" cellspacing="1">
<tbody>
<tr>
<td colspan="7" height="10">
</td>
</tr>
<tr>
<td colspan="7">
<a name="MAIN">
<span class="hdr5">MAIN</span>
</a>
</td>
</tr>
<tr bgcolor="#E7E7BD">
<td class="content">TITLE PAGE-USA</td>
</tr>
<tr bgcolor="#DDDDA5">
<td class="content">REVISIONS</td>
</tr>
<tr>
<td colspan="7" height="10">
</td>
</tr>
<tr>
<td colspan="7">
<a name="APPENDIX">
<span class="hdr5">APPENDIX</span>
</a>
</td>
</tr>
<tr>
<td colspan="7">
<a name="CONTENTS">
<span class="hdr5">CONTENTS</span>
</a>
</td>
</tr>
<tr>
<td colspan="7" height="10">
</td>
</tr>
</tbody>
</table>
и мой текущий XPath:
//tr[*='MAIN']/following-sibling::tr[following::tr[text()!=' ']]
В этом примере я хочу получить узлы TR 'MAIN', 'TITLE PAGE-USA' и 'REVISIONS'. Мой текущий XPath работает, но дает мне все узлы TR в таблице, включая «ПРИЛОЖЕНИЕ». Я думаю, что проблема связана с моей последней частью моего XPath, но я не уверен, что попробовать.
Редактировать: После некоторых экспериментов я могу получить первый узел и последний узел, но все еще не могу объединить их, чтобы получить все узлы TR между первым и последним узлами.
Первый узел:
//table/tbody/tr/td/table/tbody/tr/td/a[@name='MAIN']
Последний узел (в VB.NET для получения символа неразрывного пробела):
sbXp.AppendFormat("//table/tbody/tr/td/table/tbody/tr/td[.='{0}']", Chr(160))