HtmlAgilityPack을 사용하고 있습니다. 모든 P 태그를 검색하고 P 태그 내의 스타일에 "margin-top : 0px"를 추가합니다.HtmlAgilityPack을 사용하여 Html에 스타일 속성을 추가하는 더 나은 방법
당신이 볼 수 있듯이 그것은 margin-top 속성의 "brute forcing"입니다. 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");
}
}
}
UPDATE : 나는 알렉스의 제안에 따라 코드를 수정했습니다. 더 "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);
}
}
감사합니다. Alex, 나는 이러한 변화가 마음에 들며 그것을 만들 예정입니다. 나는 당신을 upvoted했지만 질문을 지금 열려있는 유지하고 싶습니다. 누군가가 HtmlAgilityPack에서 스타일 속성을 구문 분석하고 일부 콜렉션 유형 구조를 통해 여백을 추가 할 수있는 기능을 알고 있기를 바란다. 나는 보았지만 하나를 찾을 수 없었지만 그것이 그것이 없다는 것을 의미하지는 않습니다. –
@Gene S, AgilityPack이'style' 속성의 내용을 파싱 할 수 있을지 의심 스럽습니다. 그러나'string.Split' 메쏘드를 사용하여 속성 값을 세미콜론 (';')으로 나눌 수 있고, 그 값을 처리하고,'string.Join'을 사용하여 값을 * pack * 할 수 있습니다. – Alex
나는 그것에 대해 생각했다. 어쩌면 내가 AgilityPack으로 구워 지도록 약간의 확장 메소드를 생성 할 것입니다. 귀하의 의견에 감사드립니다. –