2010-07-09 56 views
0

因此,我正在寫一個mac應用程序,它使用xpath解析SF巨人棒球統計數據。在我的情況下,我有一個人的標識符<td class="textSm" align="right">1.&nbsp;</td>(在我的應用程序中,一個人可以根據數字輸入搜索查找統計數據),但是從那裏我需要退出HTML中的該點,然後轉到第一個節點,我可以在這裏得到HTML底部的實際統計數據。XPath Ancestor Axis Multiple Parents

<tr> <! The node I need to back out into > 

    <td><img src="/images/trans.gif" width="1" height="1" border="0" /></td>   
    <td>&nbsp;</td> 

    <td> 
     <table border="0" cellspacing="0" cellpadding="0"> 
      <tr> 
       <td class="textSm" align="right">1.&nbsp;</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]。任何感謝,將不勝感激。

回答

2

對於被提供的XML片段,以下XPath表達式將定位似乎是所希望的節點:

//table[@border='0' and @cellspacing='0' and @cellpadding='0'] 
      /tr/td[starts-with(., '1.')] 
         /ancestor::tr[2] 

這將選擇的節點的始祖<tr>的始祖<tr>使用所識別的問題中提供了XPath表達式。

+0

謝謝你的回答,但我有一個問題,這個節點會帶我到什麼程度,當我使用我的程序來運行它時,它什麼也不返回。這是否只是帶我到節點,它是所有這些代碼的父節點,還是帶我到的第二個元素,即​​ 。我需要什麼代碼才能獲得統計信息...... /祖先:: tr [4]?謝謝:) – user380776 2010-07-09 21:37:05

+0

@ user380776:這會帶你到你指定的節點:'<!我需要將節點退出到''中。它是' 1的第二個'tr'祖先。  '。 – 2010-07-09 22:07:33

+0

非常感謝您的幫助,但我仍然無法獲得這項工作。每次我嘗試調用'... /祖先:: tr [4]'來提取統計信息時,解析器崩潰了。爲什麼'.../ancestor :: tr [2]'將我們帶到' 1正上方的''節點。  '?再次感謝你的幫助。 – user380776 2010-07-11 23:47:22