C# Xpath选择第二个tr之后的所有tr
我使用HtmlAgilityPack我有一个html表格C# Xpath选择第二个tr之后的所有tr,c#,xpath,html-agility-pack,C#,Xpath,Html Agility Pack,我使用HtmlAgilityPack我有一个html表格 <TABLE class=default cellSpacing=0 width="95%" border=0 name="LISTA_MOV"><TBODY> <TR> <TD class=normal colSpan=5 align=center>ACCOUNT IN EUR: ES1030580147982720000036 - HAZERA ESPAÑA</T
<TABLE class=default cellSpacing=0 width="95%" border=0 name="LISTA_MOV"><TBODY>
<TR>
<TD class=normal colSpan=5 align=center>ACCOUNT IN 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> <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>...
我得到了40个值,第一个我不需要的值是“nbsp;”和“Date”,
sow我只需要修复Xpath,它将在第二秒(或者在其他情况下更多)后返回所有tr
如何更改Xpath
//tr//td[1]
,使其在第二个tr元素之后查找tr。您可以尝试使用Xpathposition()
过滤器,例如:
//tr[position() > 2]//td[1]
您可以尝试使用XPath
position()
filter,例如:
//tr[position() > 2]//td[1]
正如DGibbs所说,您可以使用position,应用它如下:
GeneralUtils.GetListDataFromHtmlSourse(PageData, "//tr[position() > 2]//td[1]");
正如DGibbs所说,您可以使用position,应用它如下:
GeneralUtils.GetListDataFromHtmlSourse(PageData, "//tr[position() > 2]//td[1]");
为什么不在XPath中更具体一些?比如:
/TABLE[@name='LISTA_MOV']/tr[position() > 1]/td[1]
为什么不在XPath中更具体一些?比如:
/TABLE[@name='LISTA_MOV']/tr[position() > 1]/td[1]
为什么不使用这个方法来跳过前两个步骤呢?我可以检查我的列表是否包含at[1]=nbsp或date,但我想用Xpath来实现这一点,我认为这更合适。为什么?这基本上是一样的,你的意图在我看来更清楚。无论如何,你可以使用。类似于
“Elem[position()>2]”
@DGibbs使用XPath实际上是有意义的,因为智能XPath处理器甚至不会触及前两个条目,而如果使用skip()
,则可能必须序列化内容(如果这是一个大型元素,这当然更相关)。另外,XPath方法更清晰(但我是XPath/XQuery开发人员,因此这可能取决于个人背景),为什么不使用该方法来跳过前两个步骤呢?我可以检查我的列表是否包含at[1]=nbsp或date,但我想用XPath来实现这一点,我认为这更合适。为什么?这基本上是一样的,你的意图在我看来更清楚。无论如何,你可以使用。类似于“Elem[position()>2]”
@DGibbs使用XPath实际上是有意义的,因为智能XPath处理器甚至不会触及前两个条目,而如果使用skip()
,则可能必须序列化内容(如果这是一个大型元素,这当然更相关)。另外,我认为XPath的方式更清晰(但我是XPath/XQuery开发人员,因此这可能取决于个人背景)