Bearbeiten von HTML in C
Symptom
HTML-Attribute in einer Zeichenkette sollen entfernt werden. Da die HTML-Struktur zu komplex ist, lassen sich die Attribute mit regulären Ausdrücken nicht zuverlässig finden und entfernen.
Ursache und Lösung
HTML/XML lässt sich mit regulären Ausdrücken nicht fehlerfrei verarbeiten. Mit möglichst wenigen Abhängigkeiten löst dies die Bibliothek CsQuery, die die Funktionalität von jQuery (CSS2/CSS3-Selektoren, DOM-Bearbeitung) für C# bereitstellt:
/// <summary>Sucht in einem HTML-String bestimmte Attribute und entfernt sie.</summary>
/// <param name="selector">z. B. "div>ul li:first-child"</param>
/// <param name="attributeName">Name des zu entfernenden Attributs</param>
public static IHtmlString RemoveAttribute(this IHtmlString s, String selector, String attributeName)
{
if (s == null) return null;
if (String.IsNullOrWhiteSpace(selector)) throw new ArgumentNullException("selector");
if (String.IsNullOrWhiteSpace(attributeName)) throw new ArgumentNullException("attributeName");
// CsQuery mit dem HTML-String initialisieren
CQ q = CQ.Create(s.ToString());
// Elemente per Selektor auswaehlen und Attribut entfernen
q[selector].RemoveAttr(attributeName);
// manipuliertes DOM als String zurueckgeben
return new HtmlString(q.Render());
}
Der Aufruf q[selector] entspricht jQuerys find(selector); RemoveAttr() entfernt das Attribut, Render() gibt das DOM als HTML-String zurück.
Links und Quellen
Unterstützung von m.a.x. it
Bei plattformübergreifender App- und Softwareentwicklung unterstützt Sie m.a.x. it mit individueller Softwareentwicklung.
Über m.a.x. it Die m.a.x. Informationstechnologie AG ist seit über 30 Jahren IT-Partner mittelständischer und großer Unternehmen in München und bietet maßgeschneiderte Lösungen und Services in den Bereichen Cloud, Cybersecurity, Netzwerk, Windows, Linux und Softwareentwicklung. Sie haben eine Frage zu diesem Artikel oder brauchen Unterstützung?
