XPath для братьев и сестер с одного узла на пустой - PullRequest
0 голосов
/ 08 ноября 2018

Я изо всех сил пытался создать XPath, чтобы дать мне узлы-братья от известного узла до пустого узла FIRST или последнего узла . Данные выглядят так:

<table width="100%" border="0" cellpadding="2" cellspacing="1">
    <tbody>
        <tr>
             <td colspan="7" height="10">&nbsp;
             </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">&nbsp;
             </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">&nbsp;
             </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))
...