C#HtmlAgilityPack-提取外部范围匹配值<table> <table> </table> </table>

时间:2019-10-14 22:21:50

标签: c# html-agility-pack

string input = @"<table>
    <tr>
        <td>Text A</td>
    </tr>
    <tr>
        <td>
            <table>  <!-- Notice this is an inner scope table -->
                <tr>
                    <td>Text B</td>
                </tr>
            </table>
        </td>
    </tr>
</table>

<table>
    <tr>
        <td>
            <table> <!-- Notice this is an inner scope table -->
                <tr>
                    <td>Text C</td>
                </tr>
            </table>
        </td>
    </tr>
</table>

<table>
    <tr>
        <td>Text D</td>
    </tr>
</table>"

我有一系列上述字符串格式的表。

我要提取所有<tr>的第一级中的内容,其中预期的提取内容为:

Text A

<table>
    <tr>
        <td>Text B</td>
    </tr>
</table>

<table>
    <tr>
        <td>Text C</td>
    </tr>
</table>

Text D

使用HtmlAgilityPack:

var htmlDocument = new HtmlDocument();
            htmlDocument.LoadHtml(input);

            var output = htmlDocument.DocumentNode
                .SelectNodes("table/tr");

正在拾取内部表而不是外部表。我无法确定如何“确保只有父母tr的父母被捡起”。

1 个答案:

答案 0 :(得分:1)

sum += num[i]; 开始XPath表达式,以明确指定相对于文档根目录的匹配,例如sum /= num[i]; 。此类表达式与预期内容匹配,但与/标签一起。为了获得与问题表达完全相同的结果,应将其更新为"/table/tr"

<td>