Advertisement
uwekeim

HtmlAgilityPack remove elements by ID or class

Dec 14th, 2013
355
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.18 KB | None | 0 0
  1. namespace ZetaProducer.RuntimeBusinessLogic.Webbing.Printing
  2. {
  3.     using System;
  4.     using System.Linq;
  5.     using HtmlAgilityPack;
  6.  
  7.     internal static class PrintAgilityPackExtensions
  8.     {
  9.         public static void RemoveElementsByClass(this HtmlDocument doc, string className)
  10.         {
  11.             var nodes = doc.DocumentNode.SelectNodes(string.Format(@"//*[contains(@class,'{0}')]", className));
  12.             if (nodes != null)
  13.             {
  14.                 foreach (var node in nodes)
  15.                 {
  16.                     if (node != null)
  17.                     {
  18.                         // Muss ganze Klasse haben.
  19.                         var classes = node.Attributes[@"class"].Value;
  20.                         if (containsFullWord(classes, className))
  21.                         {
  22.                             var parent = node.ParentNode;
  23.                             if (parent != null)
  24.                             {
  25.                                 parent.RemoveChild(node);
  26.                             }
  27.                         }
  28.                     }
  29.                 }
  30.             }
  31.         }
  32.  
  33.         private static bool containsFullWord(string classes, string className)
  34.         {
  35.             if (string.IsNullOrWhiteSpace(classes) || string.IsNullOrWhiteSpace(className))
  36.             {
  37.                 return false;
  38.             }
  39.             else
  40.             {
  41.                 classes = classes.Trim();
  42.                 className = className.Trim();
  43.  
  44.                 var raw = classes.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
  45.                 return raw.Any(s => string.Equals(s, className));
  46.             }
  47.         }
  48.  
  49.         public static void RemoveElementsByID(this HtmlDocument doc, string id)
  50.         {
  51.             var nodes = doc.DocumentNode.SelectNodes(string.Format(@"//*[@id='{0}']", id));
  52.             if (nodes != null)
  53.             {
  54.                 foreach (var node in nodes)
  55.                 {
  56.                     var parent = node.ParentNode;
  57.                     if (parent != null)
  58.                     {
  59.                         parent.RemoveChild(node);
  60.                     }
  61.                 }
  62.             }
  63.         }
  64.     }
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement