static void CleanNodes(IEnumerable<IHtmlNode> nodes, IDictionary<string, string[]> whiteList)
{
var nodesToBeRemoved = new List<IHtmlNode>();
foreach(var node in nodes) {
if(whiteList.ContainsKey(node.Name)) {
CleanAttributes(node.Attributes, whiteList[node.Name]);
CleanNodes(node.Children, whiteList);
} else {
nodesToBeRemoved.Add(node);
}
}
foreach(var node in nodesToBeRemoved)
node.Remove();
}