Bearbeiten von HTML in C: Unterschied zwischen den Versionen
Anki (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
imported>TechCorner-Redaktion Softwareentwicklung: Überarbeitung |
||
| (6 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
== | == Symptom == | ||
HTML-Attribute in einer Zeichenkette sollen entfernt werden. Da die HTML-Struktur | 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. | ||
== | |||
HTML | == 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: | |||
<syntaxhighlight lang="csharp"> | |||
/// <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> | |||
/// <param name="selector"> | |||
/// <param name="attributeName"> | |||
public static IHtmlString RemoveAttribute(this IHtmlString s, String selector, String attributeName) | 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()); | |||
} | |||
</syntaxhighlight> | |||
Der Aufruf <code>q[selector]</code> entspricht jQuerys <code>find(selector)</code>; <code>RemoveAttr()</code> entfernt das Attribut, <code>Render()</code> gibt das DOM als HTML-String zurück. | |||
{{Hinweis|CsQuery wird nicht mehr aktiv gepflegt. Als moderne Alternative für serverseitiges HTML-Parsing in .NET eignet sich z. B. AngleSharp.}} | |||
== Links und Quellen == | |||
* [https://github.com/jamietre/CsQuery CsQuery auf GitHub] | |||
== | == Unterstützung von m.a.x. it == | ||
Bei plattformübergreifender App- und Softwareentwicklung unterstützt Sie m.a.x. it mit [https://www.max-it.de/development/individuelle-softwareentwicklung/ individueller Softwareentwicklung]. | |||
{{Uebermax}} | |||
[[Kategorie:Softwareentwicklung]] | |||
Aktuelle Version vom 15. September 2026, 00:00 Uhr
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?
