如何使用xpath 1.0获取两个节点之间的节点?
问题描述:
有下面的html表格。如何使用xpath(Html敏捷包)为“Session X”获取所有tr
?如何使用xpath 1.0获取两个节点之间的节点?
有两个问题,
-
是否有可能放松一点比较话X时(
<tr><td colspan=15>Session X</td></tr>
和下届会议tr
之间)?因为它可能是Session X Session X session_X
下届会议文字可以比“会议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']
我不认为你发送足够的信息来知道如何从继续那里。
获得'tr'已经足够了。但是,以下兄弟可能不完全是“会话Y”。它可以是除“会话X”以外的任何会话名称。 – ca9163d9
顺便说一句,我得到了'System.Xml.XPath.XPathException:命名空间管理器或XsltContext需要错误。该查询在尝试xpath时有一个前缀,变量或用户定义的函数。 – ca9163d9
那条路上有错误。它应该是'follow-sibling ::'(注意两个分号)。如前所述,'prior-sibling:tr'和'following-sibling:tr'似乎是命名空间前缀,而不是XPath轴。 – joemfb