HtmlAgilityPackを使用しています。すべてのPタグを検索し、Pタグ内のスタイルに「margin-top:0px」を追加しています。
ご覧のとおり、これはマージントップ属性の一種の「ブルートフォーシング」です。HtmlAgilityPackを使用してこれを行うためのより良い方法が必要なようですが、私はそれを見つけることができず、HtmlAgilityPackのドキュメントは存在しません。
誰かがより良い方法を知っていますか?
HtmlNodeCollection pTagNodes = node.SelectNodes("//p[not(contains(@style,'margin-top'))]");
if (pTagNodes != null && pTagNodes.Any())
{
foreach (HtmlNode pTagNode in pTagNodes)
{
if (pTagNode.Attributes.Contains("style"))
{
string styles = pTagNode.Attributes["style"].Value;
pTagNode.SetAttributeValue("style", styles + "; margin-top: 0px");
}
else
{
pTagNode.Attributes.Add("style", "margin-top: 0px");
}
}
}
更新:Alexの提案に基づいてコードを変更しました。より「DOM」の方法でスタイル属性を処理するHtmlAgilityPackにいくつかの組み込み機能があるかどうかを知りたいです。
const string margin = "; margin-top: 0px";
HtmlNodeCollection pTagNodes = node.SelectNodes("//p[not(contains(@style,'margin-top'))]");
if (pTagNodes != null && pTagNodes.Any())
{
foreach (var pTagNode in pTagNodes)
{
string styles = pTagNode.GetAttributeValue("style", "");
pTagNode.SetAttributeValue("style", styles + margin);
}
}