2014-06-30 113 views
0

我使用HtmlAgilityPack我有表Xpath的選擇第二TR畢竟TR

<TABLE class=default cellSpacing=0 width="95%" border=0 name="LISTA_MOV"><TBODY> 
<TR> 
<TD class=normal colSpan=5 align=center>ACCOUNT IN&nbsp;EUR: ES1030580147982720000036 - HAZERA ESPAÑA</TD></TR> 
<TR> 
<TD class=columnas vAlign=top width=80 align=center>Date</TD> 
<TD class=columnas vAlign=top width=60 align=center>Value date</TD> 
<TD class=columnas vAlign=top align=center>Reference</TD> 
<TD class=columnas vAlign=top align=center>Amount</TD> 
<TD class=columnas vAlign=top align=center>Balance</TD></TR> 
<TR> 
<TD class=columnas vAlign=top width=80 align=center><INPUT onclick="sortTable('LISTA_MOV',0,true,'Date');" alt="Ordenar Ascendente" src="/BE/util_apoyo/img/esp/orden_1.gif" type=image border=0 name=Sort>&nbsp;<INPUT onclick="sortTable('LISTA_MOV',0,false,'Date');" alt="Ordenar Descendente" src="/BE/util_apoyo/img/esp/orden_2.gif" type=image border=0 name=Sort_Date_down0></TD>... 
當我試圖日期

,(在與日期值的TD)的HTML使用XPath "//tr//td[1]"

GeneralUtils.GetListDataFromHtmlSourse(PageData, "//tr//td[1]"); 

我得到40個值,兩個拳頭我不需要他們是「nbsp;」和「日期」, 母豬我只需要解決我的Xpath將retur我所有的TR後第二次(或更多在其他情況下)

我怎麼能需要改變的Xpath //tr//td[1],它會尋找第二TR後TR元素。

+0

你爲什麼不只是使用[LINQ .Skip()](http://msdn.microsoft.com/en-us/library/vstudio/bb358985(V = VS.100 ).aspx)方法來跨過前兩個? – DGibbs

+0

我可以檢查我的列表是否包含在[1] = nbsp或日期,但我想用Xpath來做到這一點,我認爲這是更合適的方式。 – user3567884

+3

爲什麼?它基本上是一樣的東西,你的意圖是更清晰的國際海事組織。無論如何,你可以使用[position()](http://msdn.microsoft.com/en-us/library/bb675199.aspx)。就像''Elem [position()> 2]'' – DGibbs

回答

1

像DGibbs說,你可以使用位置,應用它想:

GeneralUtils.GetListDataFromHtmlSourse(PageData, "//tr[position() > 2]//td[1]"); 
3

您可以嘗試使用XPath position()過濾器,例如:

//tr[position() > 2]//td[1] 
1

爲什麼不能在你的XPath更具體?喜歡的東西:

/TABLE[@name='LISTA_MOV']/tr[position() > 1]/td[1]