C# 和 Html 敏捷包

C# and Html Agility Pack

我有多个文件,我必须从中提取包含数据的 tables。问题是 tables 没有 ID,所以我必须根据内容(在每个文件中都是不变的)进行搜索。每个文件中有多个 table,感兴趣的 table 没有常量 XPath。

<table border="0" cellspacing="0" cellpadding="0" style="BORDER-COLLAPSE: collapse" bordercolor="#111111">
    <tbody>
        <tr> 
            <td class="s">CONSTANT_TEXT</td>
            <td class="l">CHANGING_VALUE</td>
        </tr>

        <tr> 
            <td class="s"> </td>
            <td class="l"><a style="" id="CONSTANT_ID" href="mailto: XXXX</a>
 </td>
        </tr>
    </tbody>

</table>

我如何: 1. 根据 CONSTANT_TEXT CONSTANT_TEXT , return 第二个 TD CHANGING_VALUE 的值搜索,不知道路径(它没有 ID,它的位置从文件中更改归档)。 2.根据CONSTANT_TEXTCONSTANT_TEXT,return那个TD

的Parenttable进行搜索

我所做的是使用 Html Agility Pack 搜索和 return CONSTANT_TEXT ,然后向上迭代 XPath 直到达到 Table。

var output= document.DocumentNode.SelectNodes("//a[@id='CONSTANT_ID']");
output[0].XPath ="/html[1]/body[1]/table[1]/thead[1]/tr[1]/td[1]/table[1]/tbody[1]/tr[2]/td[2]/a[1]"

我的计划是迭代每个输出并获得最低 table 出现的 XPath,table[1],然后提取数据。

谢谢, 麦克

严格来说,您需要以下 XPath:

Search based on the CONSTANT_TEXT CONSTANT_TEXT , return the value of 2nd TD CHANGING_VALUE

//td[.="CONSTANT_TEXT"]/following-sibling::td[1]/text()

输出:CHANGING_VALUE

Search based on CONSTANT_TEXT CONSTANT_TEXT , return the Parent table of that TD

//td[.="CONSTANT_TEXT"]/ancestor::table[1]

输出:<table> element