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

时间:2017-03-10 05:32:32

标签: c# html html-agility-pack

我有一些我正在使用C#

解析的HTML

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

<strong>Title</strong>: Mr<br>
<strong>First name</strong>: Fake<br>
<strong>Surname</strong>: Guy<br>

我正在尝试将文本放在一个类似于

的数组中
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

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

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:3)

您可以使用XPath following-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);
}

<强> dotnetfiddle demo

输出

Title, : Mr
First name, : Fake
Surname, : Guy

你应该可以删除&#34;:&#34;通过简单的字符串操作,如果需要......

答案 1 :(得分:1)

SELECT CONCAT(INSTRUCTOR.FIRST_NAME, INSTRUCTOR.LAST_NAME) AS INSTRUCTOR_NAME 是一个常见标记,因此您提供的示例格式特定。

<strong>