所以我正在编写一个使用xpath解析SF Giants棒球统计数据的mac应用程序。在我的情况下,我有一个特定的数字标识符<td class="textSm" align="right">1. </td>
(在我的应用程序中,一个人可以根据数字输入搜索查找统计数据)但是从那里我需要从HTML中的那个位置退出,并且转到第一个节点,在那里我可以获得HTML底部的实际统计数据。
<tr> <! The node I need to back out into >
<td><img src="/images/trans.gif" width="1" height="1" border="0" /></td>
<td> </td>
<td>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="textSm" align="right">1. </td> <! Number Identifier here >
<td align="left" nowrap>
<a href="/stats/individual_stats_player.jsp?c_id=sf&playerID=467055" class="textSm">P Sandoval</a>
</td>
</tr>
</table>
</td>
<td align="center">SF</td> <! list of statistics starts here >
<td align="center">3B</td>
<td align="center">83</td>
<td bgcolor="#CCCCCC" align="center">326</td>
<td align="center">41</td>
<td align="center">88</td>
<td align="center">18</td>
<td align="center">2</td>
<td align="center">6</td>
<td align="center">34</td>
<td align="center">128</td>
<td align="center">27</td>
<td align="center">45</td>
<td align="center">2</td>
<td align="center">2</td>
<td align="center">.324</td>
<td align="center">.393</td>
<td align="center">.270</td>
</tr>
到目前为止,我有//table[@border='0' and @cellspacing='0' and @cellpadding='0']/tr/td[starts-with(., '1.')]
这将找到我的号码标识符。我无法工作的是一直退回到统计所在的父节点<tr>
。我最好的猜测是//table[@border='0' and @cellspacing='0' and @cellpadding='0']/tr/td[starts-with(., '1.')]/ancestor::tr/ancestor::table/ancestor::td/ancestor::tr[1(or any other number for the statistic i want]
。非常感谢。
答案 0 :(得分:2)
对于提供的XML片段,以下XPath表达式将找到所需的节点:
//table[@border='0' and @cellspacing='0' and @cellpadding='0']
/tr/td[starts-with(., '1.')]
/ancestor::tr[2]
这将选择使用问题中提供的XPath表达式标识的节点的第一个祖先<tr>
的第一个祖先<tr>
。