我一直在努力创建一个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节点,包括“ APPENDIX”。我认为问题出在我的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))