如何使用xpath 1.0获取两个节点之间的节点?

问题描述:

有下面的html表格。如何使用xpath(Html敏捷包)为“Session X”获取所有tr如何使用xpath 1.0获取两个节点之间的节点?

有两个问题,

  1. 是否有可能放松一点比较话X时(<tr><td colspan=15>Session X</td></tr>和下届会议tr之间)?因为它可能是

    Session X 
    Session X 
    session_X 
    
  2. 下届会议文字可以比“会议X”以外的任何其他。也许最好检查<tr>是否只包含一个<td colspan=15>

XML/HTML:

<table> 
<tr><td colspan=15>Session A</td></tr> 
....... 
<tr><td colspan=15>Session X</td></tr> 
<tr><td>...</td><td>Column header 1</td><td>value1</td><td>value2</td>......</tr> 
<tr><td>...</td><td>Column header 2</td><td>value1</td>......</tr> 
<tr><td>...</td><td>Column header 3</td><td>value1</td>......</tr> 
..... 
<tr><td colspan=15>Session Y</td></tr> <!--next session, the inner text can be anything--> 
..... 

这应该给你tr与信息:

.//tr[preceding-sibling::tr/td/text()='Session X'][following-sibling::tr/td/text()='Session Y'] 

我不认为你发送足够的信息来知道如何从继续那里。

+0

获得'tr'已经足够了。但是,以下兄弟可能不完全是“会话Y”。它可以是除“会话X”以外的任何会话名称。 – ca9163d9

+0

顺便说一句,我得到了'System.Xml.XPath.XPathException:命名空间管理器或XsltContext需要错误。该查询在尝试xpath时有一个前缀,变量或用户定义的函数。 – ca9163d9

+0

那条路上有错误。它应该是'follow-sibling ::'(注意两个分号)。如前所述,'prior-sibling:tr'和'fol​​lowing-sibling:tr'似乎是命名空间前缀,而不是XPath轴。 – joemfb