HTML 민첩성 팩을 사용하여 잘못 구성된 HTML을 정리하는 방법

asp.net c# html html-agility-pack

문제

나는 잘못된 형식의 HTML 블록을 정리하는 데 사용되는 정규 표현식의이 무서운 모음을 대체하려고 시도하고 있으며 C #의 HTML 민첩성 팩을 발견했습니다. 매우 강력 해 보이지만, 필자가 생각하기에 원하는 기능을 포함 할 팩을 어떻게 사용하고 싶은지를 찾을 수는 없습니다. 나는 바보이며 문서에서 적절한 방법을 찾을 수 없다고 확신한다.

설명해 드리겠습니다 ... 제가 다음 html을 가지고 있다고 :

<p class="someclass">
    <font size="3">
        <font face="Times New Roman">
            this is some text
            <a href="somepage.html">Some link</a>
        </font>
    </font>
</p>

... 나는 다음과 같이하고 싶다.

<p class="someclass">
    <font size="3">
        <font face="Times New Roman">
            this is some text
            <a href="somepage.html">Some link</a>
        </font>
    </font>
</p>

HtmlNode.Remove () 메서드를 사용할 때 노드와 노드를 모두 제거합니다. 아이들을 보존하는 노드를 제거하는 방법이 있습니까?

감사 :)

수락 된 답변

HtmlNode에서 RemoveChild 메서드에는 다음과 같은 오버로드가 있습니다.

public HtmlNode RemoveChild(HtmlNode oldChild, bool keepGrandChildren);

그래서 이것이 당신이하는 방법입니다 :

public HtmlNode RemoveChild(HtmlNode oldChild, bool keepGrandChildren);

편집 : w / keepGrandChildren 바꾸기 옵션이 예상대로 작동하지 않는 것처럼 보입니다. 대체 구현은 다음과 같습니다.

public HtmlNode RemoveChild(HtmlNode oldChild, bool keepGrandChildren);

인기 답변

대신 AngleSharp https://github.com/AngleSharp/AngleSharp 를 사용해보세요.

var parser = new HtmlParser();
var document = parser.Parse(html);

using (var writer = new StringWriter())
{
    document.ToHtml(writer, new PrettyMarkupFormatter());
    return writer.ToString();
}



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