Ich bekomme einige HTML-Daten von Remote-Server und bevor es in der Benutzeroberfläche der Anwendung angezeigt wird, muss ich einige Änderungen vornehmen, dh Zähler löschen, ersetzen usw. Entfernen einige Tags mit Inhalten und Ändern bestimmter Link ist keine große Sache, aber wenn es um einige erweiterte Verarbeitung geht, habe ich einige Probleme.Es gibt eine Notwendigkeit zu ersetzen (löschen) einige HTML-Tag-Attribute (nicht ein Tag selbst - es gibt viele Beispiele über das Internet über Dies). Zum Beispiel: Löschen Sie alle onmouseover Handler von Schaltflächen. Ich weiß, dass XPath für solch ein Problem perfekt passen würde, aber ich weiß es überhaupt nicht und obwohl meine Informationen XHTML-Beschwerde sind, ist es in einer String-Variablen gespeichert und nicht abfragbar :(. Also versuche ich zu verwenden Reguläre Ausdrücke dieses Problem zu lösen, ohne Erfolg für den Moment. ich denke, es ist ein Fehler im Muster ...C# - Verarbeitung von HTML-Tag-Attributen
public string Processing (string Source, string Tag, string Attribute)
{
return System.Text.RegularExpressions.Regex.Replace(Source, string.Format(@"<{0}(\s+({1}=""([^""]*)""|\w+=(""[^""]*""|\S+)))+>", Tag, Attribute), string.Empty);
}
...
string before = @"<input type=""text"" name=""Input"" id=""Input"" onMouseOver=""some js to be eliminated"">";
string after = Processing(before,"input","onMouseOver");
// expected : <input type="text" name="Input" id="Input">"
Es scheint, als ob die schließende runde Klammer der Gruppe fehlt (Regex kompiliert nicht). Fester Ausdruck: @ "(<{0}\b[^>] * \ b?) ({1} =" "(?: [^" "] *)" ")" – Jaded
Und natürlich, vielen Dank, Ihr Tipp ist eigentlich das, was ich brauchte. – Jaded
Hoppla. Eigentlich sollte die öffnende runde Klammer kurz vor der {1} nicht da sein. Es macht keinen Sinn, das Attribut zu erfassen, da Sie es nur löschen. –