如何使用 HTML Agility Pack 将单个 <p> 标签输出到富文本框?

How do I output individual <p> tags using HTML Agility Pack to a rich text box?

我正在学习如何使用 HTML Agility Pack 从网页上抓取文本。我想从暴雪的网站上获取《守望先锋》中的英雄传记。我目前正在使用它来查找所需的文本并将其写入富文本框。

var paragraphs = page.DocumentNode.SelectNodes("//div[@class='hero-bio-backstory pad-sm']");

     foreach(HtmlNode node in paragraphs)
     {
         rchTxtBox.AppendText(node.InnerText);
         rchTxtBox.AppendText("\n");
     }

我想要获取的是每个

的 InnerText,它们之间有一条 return 线。

<div class="hero-bio-backstory pad-sm"> == [=13=]
     <p>...</p>
     <p>...</p>
     <p>...</p>
     <p>...</p>
</div>

不是输出每个段落之间有一个 return 字符,而是将它们全部写入一个固定块中。有没有办法做到这一点?

您的 select 或 //div[@class='hero-bio-backstory pad-sm'] 正在返回一个节点 - 整个 div。当您随后在此节点上调用 InnerText 时,它返回整个 div 中的文本,没有标记。因此,您看到了您描述的行为:您的循环运行一次,将所有文本附加到一个块中,然后添加一个尾随换行符。

您需要使用 XPath 表达式,它将 select 所有 p 节点,即 //div[@class='hero-bio-backstory pad-sm']/p.