Как удалить атрибут inline height из html?htmlagilitypack удалить атрибуты строки
<tr style="height:2px;">
</tr>
<tr style="height:2px;">
</tr>
Я хочу, чтобы только атрибуты высоты были удалены из всех тэгов.
спасибо заранее,
Как удалить атрибут inline height из html?htmlagilitypack удалить атрибуты строки
<tr style="height:2px;">
</tr>
<tr style="height:2px;">
</tr>
Я хочу, чтобы только атрибуты высоты были удалены из всех тэгов.
спасибо заранее,
Вы можете:
Если ТРС не имеют никаких других, кроме высоты стилей, вы можете просто удалить раздеть их из атрибута стиля (линии я комментировал из)
в противном случае, вы можете написать что-то вроде ниже фрагмент кода для фильтрации стиль ключи вы хотите удалить
string html = @"<tr style='height:2px;'>
</tr>
<tr style='height:2px;'>
</tr>";
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);
var trs = doc.DocumentNode.SelectNodes("tr");
foreach (var tr in trs)
{
Console.WriteLine(tr.OuterHtml);
//tr.Attributes.Remove("style");
var filteredStyles = GetStyles(tr.GetAttributeValue("style"), "height");
tr.SetAttributeValue("style", string.Join(":", filteredStyles));
Console.WriteLine(tr.OuterHtml);
}
Вспомогательная функция:
private static List<string> GetStyles(string style, params string[] keysToRemove)
{
List<string> styles = new List<string>();
var stylesKeyPairs = style.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
if (keysToRemove != null)
{
foreach (var styleKeyPair in stylesKeyPairs)
{
var styleKeys = styleKeyPair.Split(new char[] { ':' }, StringSplitOptions.RemoveEmptyEntries);
if (!keysToRemove.Contains(styleKeys.FirstOrDefault()))
styles.Add(styleKeyPair);
}
}
else
styles.AddRange(stylesKeyPairs);
return styles;
}
Выход (для обоих растворов, в данном случае):