HTML Agility Pack - 在节点后抓取文本

Rob*_*b J 0 html c# html-agility-pack

我有一些 HTML 正在使用 C# 解析

示例文本如下,尽管使用不同的记录重复了大约 150 次

<strong>Title</strong>: Mr<br>
<strong>First name</strong>: Fake<br>
<strong>Surname</strong>: Guy<br>
Run Code Online (Sandbox Code Playgroud)

我试图在一个数组中获取文本,就像

customerArray [0,0] = Title
customerArray [0,1] = Mr
customerArray [1,0] = First Name
customerArray [1,1] = Fake
customerArray [2,0] = Surname
customerArray [2,1] = Guy
Run Code Online (Sandbox Code Playgroud)

我可以获取数组中的文本,但在 STRONG 关闭标签之后获取文本时遇到问题,直到 BR 标签然后找到下一个 STRONG 标签

任何帮助,将不胜感激

har*_*r07 5

您可以使用 XPathfollowing-sibling::text()[1]直接在每个strong. 这是一个最小但完整的示例:

var raw = @"<div>
<strong>Title</strong>: Mr<br>
<strong>First name</strong>: Fake<br>
<strong>Surname</strong>: Guy<br>
        </div>";
var doc = new HtmlDocument();
doc.LoadHtml(raw);
foreach(HtmlNode node in doc.DocumentNode.SelectNodes("//strong"))
{
    var val = node.SelectSingleNode("following-sibling::text()[1]");
    Console.WriteLine(node.InnerText + ", " + val.InnerText);
}
Run Code Online (Sandbox Code Playgroud)

dotnetfiddle demo

输出 :

Title, : Mr
First name, : Fake
Surname, : Guy
Run Code Online (Sandbox Code Playgroud)

如果需要,您应该能够通过执行简单的字符串操作来删除“:”...