HTMLAgilityPack을 사용하여 내부 텍스트에 노드 추가

c# html-agility-pack

문제

문제점 : 모든 <p> 태그의 style 속성을 제거해야하고 font-weight:bold 속성이 포함 된 경우 <b> 을 추가해야합니다.

예 : html이 <p style="margin-top:0pt; margin-bottom:0pt;font-weight:bold; font-weight:bold;font-size:10pt; font-family:ARIAL" align="center"> SOME TEXT HERE</p> .

출력은 다음과 같아야합니다. <p align="center"> <b>SOME TEXT HERE</b></p>

다음 코드를 사용하고 있습니다.

var htmlDocument = new HtmlDocument();
            htmlDocument.LoadHtml(htmlPage);
            foreach (var htmlTag in attributetags)
            {
                var Nodes = htmlDocument.DocumentNode.SelectNodes("//p");
                if (Nodes != null)
                {
                    bool flag = false;
                    foreach (var Node in Nodes)
                    {
                        if (Node.Attributes["style"] != null)
                        {
                            if (Node.Attributes["style"].Value.Contains("font-weight:bold"))
                            {                                    
                               var bnode = HtmlNode.CreateNode("<b>");
                               Node.PrependChild(bnode);
                            }
                            Node.Attributes.Remove("style");                            
                        }
                    }
                }
            }

나는 또한 Node.InsertAfter(bcnode, Node), Node.InsertBefor(bnode, Node) 시도했다.

수락 된 답변

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);
// select all paragraphs which have style with bold font weight
var paragraphs = doc.DocumentNode.SelectNodes("//p[contains(@style,'font-weight:bold')]");
foreach (var p in paragraphs)
{
    // remove bold font weight from style
    var style = Regex.Replace(p.Attributes["style"].Value, "font-weight:bold;?", "");        
    p.SetAttributeValue("style", style); // assign new style
    // wrap content of paragraph into b tag
    var b = HtmlNode.CreateNode("<b>");
    b.InnerHtml = p.InnerHtml;
    p.ChildNodes.Clear();
    p.AppendChild(b);
}

원하는 경우 단락의 내용을 한 줄로 줄 바꿈 할 수 있습니다.

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);
// select all paragraphs which have style with bold font weight
var paragraphs = doc.DocumentNode.SelectNodes("//p[contains(@style,'font-weight:bold')]");
foreach (var p in paragraphs)
{
    // remove bold font weight from style
    var style = Regex.Replace(p.Attributes["style"].Value, "font-weight:bold;?", "");        
    p.SetAttributeValue("style", style); // assign new style
    // wrap content of paragraph into b tag
    var b = HtmlNode.CreateNode("<b>");
    b.InnerHtml = p.InnerHtml;
    p.ChildNodes.Clear();
    p.AppendChild(b);
}



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.