내부 텍스트를 보존하면서 HTML 태그 제거
태그들

c# html-agility-pack html-parsing

문제

HTML 내용에서 span, font, b, s, strike (및 다른 내부 요소) 태그를 제거하고 내부에 텍스트 및 <br> 태그를 유지하려고합니다. 이 목적을 위해 나는 HTML 민첩성 팩을 사용하고 있습니다. 나는 텍스트를 보존 할 수 있었지만 <br> 태그는 여전히 문제가된다. 어떤 아이디어?

다음은 코드입니다.

 private void removeTagsButPreserveText2(HtmlNode nodeToRemove)
    {
        var parent = nodeToRemove.ParentNode;
        var prev = nodeToRemove.PreviousSibling;

        if (prev != null)
        {
            var child = nodeToRemove.SelectNodes("./br");

            if (child == null)
            {
                parent.InsertAfter(documentToSearch.CreateTextNode(nodeToRemove.InnerText + " "), prev);

                nodeToRemove.Remove();
            }
            else
            {
                foreach (var item in child)
                {
                    var parent2 = item.PreviousSibling;

                    if (parent2 != null)
                    {
                        if (parent2.InnerText.HasDate())
                        {
                            var newNode = parent.InsertAfter(documentToSearch.CreateTextNode(parent2.InnerText), prev);
                            parent.InsertAfter(documentToSearch.CreateElement("br"), newNode);
                            nodeToRemove.Remove();
                        }
                    }
                }
            }
        }
    }

예를 들어, 입력은 다음과 같습니다.

<p><font face="Arial" size="2"><strike>
        <span style="font-weight: 400"><font color="#000000">Paper 
        Submission (Full 
        Paper) Before
        <span lang="en-us">September</span> 20, 201<span lang="en-us">2</span></font></span></strike><font color="#FF0000"><br>
        Notification of 
        Acceptance On <span lang="en-us">October 5</span>, 201<span lang="en-us">2</span><br>
        Authors' 
        Registration Before
        <span lang="en-us">October 20</span>, 201<span lang="en-us">2</span><br>
        ICNIT 2012 Conference 
        Dates November 
        17 - 18, 2012</font></font></p>

출력은 다음과 같아야합니다.

<p>Paper Submission (Full Paper) Before September 20, 2012<br>
        Notification of Acceptance On October 5, 2012<br>
        Authors' Registration Before October 20, 2012<br>
        ICNIT 2012 Conference 
        Dates November 
        17 - 18, 2012</p>

인기 답변

이런 종류의 HTML 조작에는 HTML Agility Pack 이라는 멋진 라이브러리가 있습니다.

다음은 올바른 방향을 가리키는 유사한 질문입니다. Html Agility Pack - 요소를 제거하지만 innerHtml은 삭제하지 않습니다.




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