HtmlAgilityPack跳過或刪除嵌套表

html-agility-pack

我正在使用HtmlAgilityPack來檢索以下html(注意嵌套表):

<table class="123">
<tr>
    <table class="789">
    <tr>
        <td>abc</td>
    </tr>
    <tr>
        <td>def</td>
    </tr>
    </table>
</tr>

<tr>
    <td>info 1</td>
</tr>

<tr>
    <td>info 2</td>
</tr>

<tr>
    <td>info 3</td>
</tr>
</table>

現在,我試圖找到一種聰明的方法來從父表中獲取一些信息,並從嵌套表中獲取一些信息。

到目前為止,我有以下內容:

<table class="123">
<tr>
    <table class="789">
    <tr>
        <td>abc</td>
    </tr>
    <tr>
        <td>def</td>
    </tr>
    </table>
</tr>

<tr>
    <td>info 1</td>
</tr>

<tr>
    <td>info 2</td>
</tr>

<tr>
    <td>info 3</td>
</tr>
</table>

我現在可以使用nestedTable來獲取我想要的東西(abc,def)......

但是當我嘗試從父表中獲取<tr> ,如下所示:

<table class="123">
<tr>
    <table class="789">
    <tr>
        <td>abc</td>
    </tr>
    <tr>
        <td>def</td>
    </tr>
    </table>
</tr>

<tr>
    <td>info 1</td>
</tr>

<tr>
    <td>info 2</td>
</tr>

<tr>
    <td>info 3</td>
</tr>
</table>

它似乎包括(在集合中)嵌套表中的<tr>以及...

換句話說,根據上面的html代碼,我期望有一個4 <tr>的集合,但由於它包含嵌套表中的<tr> ,我得到了一個收集6 <tr>

如何跳過碰巧嵌套表的第一個<tr> ,這樣我就可以玩遊戲並獲取我想要的信息(info1,info2,info3)(希望我有意義)

提前致謝!

一般承認的答案

//是XPATH表達式,表示“掃描所有節點和子節點”。這就是為什麼//tr將所有tr都放在根目錄之下。

如果您只是執行parentTable.SelectNodes("tr") (或等效的"./tr" ),您將選擇根目錄下的所有TR。

如果你想跳過第一個,那麼你可以在元素的position() (XPATH函數)上添加一個XPATH過濾器:

var parentTableRows = parentTable.SelectNodes("tr[position() > 1]");



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因