Ich bin ein Fan von AngleSharp. Hier ist ein minimales Beispiel mit Ihrem HTML-Snippet.
static void Main(string[] args)
{
var source = @"
<html>
<head>
</head>
<body>
<td class=""period_slot_1"">
<strong>TG</strong>
</body>
</html>";
var parser = new HtmlParser();
var document = parser.Parse(source);
var strong = document.QuerySelector("strong");
Console.WriteLine(strong.TextContent);
}
Die QuerySelector()
Methode nimmt einen CSS-Selektor, so dass Sie natürlich "strong"
problemlos auswählen können.
Wenn Sie Daten aus einer Tabelle abfragen möchten und die Klasse zählt, können Sie (wiederum unter Verwendung von normalem DOM aus JavaScript, das Sie wahrscheinlich verwenden) das DOM und LINQ zum Projizieren der Klassen und Daten verwenden. wie
static void Main(string[] args)
{
var source = @"
<table>
<tr>
<td class=""period_slot_1"">
<strong>TG</strong>
</td>
<td class=""period_slot_2"">
<strong>TH</strong>
</td>
<td class=""period_slot_3"">
<strong>TJ</strong>
</td>
</tr>
<tr>
<td class=""period_slot_1"">
<strong>YG</strong>
</td>
<td class=""period_slot_2"">
<strong>YH</strong>
</td>
<td class=""period_slot_3"">
<strong>YJ</strong>
</td>
</tr>
</table>";
var parser = new HtmlParser();
var document = parser.Parse(source);
var strongs = document.QuerySelectorAll("td > strong")
.Select(x => new
{
Class = x.ParentElement.ClassName,
Data = x.TextContent
})
.OrderBy(x => x.Class);
strongs.ToList().ForEach(Console.WriteLine);
}
Ausgänge:
{ Class = period_slot_1, Data = TG }
{ Class = period_slot_1, Data = YG }
{ Class = period_slot_2, Data = TH }
{ Class = period_slot_2, Data = YH }
{ Class = period_slot_3, Data = TJ }
{ Class = period_slot_3, Data = YJ }
Sie können einen regulären Ausdruck verwenden. Oder ein HTML-Parser. –