cf / Suchen von HTML-Strings in Dokumenten und ähnlichen Fragen.
Ich habe Beispiele für die Verwendung von HtmlAgilityPack
zum HtmlAgilityPack
einer Zeichenfolge bei der Suche nach bestimmten Tags gesehen. Was aber, wenn ich sicherstellen möchte, dass die Eingabezeichenfolge NUR Zeichenfolgen aus einer Liste enthält: List<string> AllowedTags
?
Mit anderen Worten: Wie kann ich über doc.DocumentNode.Descendants
iterieren, um den Tag-Namen zu identifizieren und zu überprüfen, ob er in der Liste enthalten ist?
var allowedTags = new List<string> { "html", "head", "body", "div" };
bool containsOnlyAllowedTags =
doc.DocumentNode
.Descendants()
.Where(n => n.NodeType == HtmlNodeType.Element)
.All(n => allowedTags.Contains(n.Name));
List<string> AllowedTags = new List<string>() { "br", "a" };
HtmlDocument goodDoc = new HtmlDocument();
goodDoc.LoadHtml("<a href='asdf'>asdf</a><br /><a href='qwer'>qwer</a>");
bool containsBadTags = goodDoc.DocumentNode .Descendants()
.Where(node => node.NodeType == HtmlNodeType.Element)
.Select(node => node.Name)
.Except(AllowedTags)
.Any();
HtmlDocument badDoc = new HtmlDocument();
badDoc.LoadHtml("<a href='asdf'><b>asdf</b></a><br /><a href='qwer'>qwer</a>");
containsBadTags = badDoc.DocumentNode .Descendants()
.Where(node => node.NodeType == HtmlNodeType.Element)
.Select(node => node.Name)
.Except(AllowedTags)
.Any();