使用 Html 敏捷包 select 所有以特定文本值开头的段落

Using Html Agility Pack to select all paragraphs that start with a certain text value

我正在学习使用 Html Agility Pack。

我有一系列看起来像这样的段落元素(为清楚起见拆分代码):

<p class="rvps2">
    <img alt="New Version Icon" 
         style="vertical-align: middle; padding : 1px; margin : 0px 5px;"
         src="lib/IMG_NewVersion.png">
    <span class="rvts16">Version 21.1.0 - 2021 Edition</span>
    <span class="rvts15"> (22nd March 2021)</span>
</p>

我只对以文本“版本”开头的段落感兴趣。目前我是这样做的:

// Select all Paragraph elements
var nodesParagraph = nodeRevHist.SelectNodes("p");

int iRevisionCount = 0;
foreach (HtmlNode itemParagraph in nodesParagraph)
{
    string text = itemParagraph.InnerText;
    if (text.Length > 7 && text.Substring(0, 7) == "Version")
    {
        iRevisionCount++;

是否可以将nodesParagraph过滤到内部文本以“Version”开头的所有段落?

如果可能的话,这将使我的代码更清晰。附带问题,我也只对这些段落元素的前 5 个感兴趣。

是否可以过滤?

您可以获得前 5 个段落,其中内部文本以“版本”开头,如下所示:

var nodesParagraph = nodeRevHist
    .Elements("p")
    .Where(p => p.InnerText.Trim().StartsWith("Version"))
    .Take(5);

此处的工作演示:https://dotnetfiddle.net/uvwcUN