Я получаю некоторые данные html с удаленного сервера и перед отображением его в пользовательском интерфейсе приложения мне нужно внести некоторые изменения, то есть удалить счетчики, заменить ссылки и т. Д. Удаление некоторых тегов с содержимым и изменение конкретной ссылки не имеет большого значения, но когда дело доходит до некоторой передовой обработки, у меня есть некоторые проблемы. Необходимо заменить (удалить) несколько атрибутов тега html (не сам тег - есть много примеров по интернету о это). Например: удалить все обработчики onmouseover с помощью кнопок. Я знаю, что XPath будет идеально подходит для такой проблемы, но я вообще этого не знаю, и хотя моя информация - жалоба XHTML, она хранится в строковой переменной и не запрашивается :(. Поэтому я пытаюсь использовать Регулярные выражения, чтобы решить эту проблему, не имела успеха на данный момент. Я думаю, что это ошибка в шаблоне ...C# - Обработка атрибутов тегов html
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">"
Кажется, что закрывающая круглая скобка группы отсутствует (регулярное выражение не компилируется). Исправлено выражение: @ "(<{0}\b[^>] *? \ B) ({1} =" "(?: [^" "] *)" ")" – Jaded
И, конечно же, спасибо большое, ваш намек на самом деле мне было нужно. – Jaded
Упс. На самом деле, открывающий круглый кронштейн перед {1} не должен быть там. Нет смысла захватывать атрибут, поскольку все, что вы делаете, это его удаление. –