부모 노드가없는 경우 노드를 삭제하는 방법

.net asp.net c# html-agility-pack

문제

WYSIWYG 입력을 정리하기 위해 HTML 민첩성 팩을 사용하고 있습니다. 이것은 최선의 방법이 아니지만 정규 표현식과의 접촉으로 폭발하는 개발자와 협력하고 있으므로 충분해야합니다.

내 WYSIWYG 내용은 다음과 같습니다 (예 :).

<p></p>
<p></p>
<p><span><input id="textbox" type="text" /></span></p>

빈 단락 태그를 제거해야합니다. 다음은 내가 지금 어떻게하고있는가입니다.

<p></p>
<p></p>
<p><span><input id="textbox" type="text" /></span></p>

그러나 HTML이 완전한 문서가 아니기 때문에 단락 태그에는 부모 노드가 없으므로 ParentNode 가 null이므로 RemoveChild 가 실패합니다.

태그를 제거하는 또 다른 방법을 찾을 수 없지만 다른 방법으로 나를 가리켜 줄 수 있습니까?

수락 된 답변

엄밀히 말하면, 1 레벨 요소는 문서 루트의 하위 요소이므로 다음 코드가 작동해야합니다.

if (node.InnerHtml == String.Empty) {
    HtmlNode parent = node.ParentNode;
    if (parent == null) {
        parent = doc.DocumentNode;
    }
    parent.RemoveChild(node);
}

인기 답변

콜렉션에서 제거하고 싶습니까?

HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//p");
if (nodes == null)
    return;

for (int i = 0; i < nodes.Count - 1; i++)
{
    nodes[i].InnerHtml = nodes[i].InnerHtml.Trim();
    if (nodes[i].InnerHtml == string.Empty)
        nodes.Remove(i);
}



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