用于选择包含随机数的html id的Xpath

时间:2010-11-10 08:39:24

标签: html xpath html-agility-pack

如果他们有以下ID,我将如何选择所有链接。

<a id="List_ctl01_link3" class="content" href=link1.aspx">
<a id="List_ctl02_link3" class="content" href=link2.aspx">
<a id="List_ctl03_link3" class="content" href=link3.aspx">
<a id="List_ctl04_link3" class="content" href=link4.aspx">

等等......

请注意,最后一部分“link3”很重要,必须包含在Xpath中。

我正在使用C#和Html敏捷包。

3 个答案:

答案 0 :(得分:5)

  

您好我如何选择所有链接   当他们有以下身份

使用此XPath表达式:

//a[@id[starts-with(.,'List_ctl')][substring(.,string-length()-5)='_link3']]

注意:XPath 1.0中没有fn:ends-with()。改为使用最后一个谓词。

答案 1 :(得分:3)

使用

//a[@id[starts-with(.,'List_ctl')
      and
        substring(.,string-length()-5)='_link3'
      and
         floor(substring-before(substring_after(.,'List_ctl'),'_'))
        =
         floor(substring-before(substring_after(.,'List_ctl'),'_'))
       ]
   ]

此XPath表达式选择文档中的所有a元素,其id属性具有包含以下所有属性的字符串值:

  1. 以字符串'List_ctl'开头。

  2. 以字符串'_link3'结尾。

  3. 'List_ctl''_'包围的子字符串是整数的表示。

答案 2 :(得分:2)

如果您使用xpath 2.0,您可以尝试使用match/matches函数并使用正则表达式。如果您使用的是xpath 1.0,则可能需要编写自定义属性解析器(请参阅xsl:function)。 AFAIR匹配功能仅适用于xpath 2.0。

可能@id [starts-with(。,'List_ct')和ends-with(。,'link3')]是另一种方法。