使用 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
我正在学习使用 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