HtmlAgilityPack - 컬렉션의 모든 노드 제거

c# html html-agility-pack windows-runtime windows-store-apps

문제

contentEditable 을 사용하여 얻은 이상한 중첩 HTML을 수정하려고합니다.

<span lang="">
   <p>line one</p>
   <p>line two</p>
</span>

나는 각각의 span 노드를 그 자식으로 대체하려고한다.

<span lang="">
   <p>line one</p>
   <p>line two</p>
</span>

여기 내가 시도한 것이있다.

<span lang="">
   <p>line one</p>
   <p>line two</p>
</span>

그러면 다음 메시지와 함께 System.ArgumentOutOfRangeException 이 throw됩니다.

<span lang="">
   <p>line one</p>
   <p>line two</p>
</span>

왜 이런 일이 일어 났는지 이해합니다. 문서를 편집하면 span 요소 모음이 무효화됩니다. 그럼 어떻게해야할까요?

또한, 어떻게 childnode에 포함되지 않은 텍스트에 대처합니까? 이 요소를 찾았다 고 가정 해 봅시다.

<span lang="">
   <p>line one</p>
   <p>line two</p>
</span>

어떻게 그걸 비틀어 넣을 수 있니?

제발 참고 :HtmlAgilityPack WinRT , SelectSingleNode 및 모든 xpath 명령을 사용할 수 없습니다.

수락 된 답변

문제에 관해서는 문서 루트가 아닌 부모 노드 에서 InsertBefore 를 호출해야합니다.

또한 새로운 노드를 만들지 않고 노드를 직접 " 이동할 "수 있다고 생각합니다.

foreach (var span in spans)
{
    foreach (var child in span.ChildNodes)
    {
        span.ParentNode.InsertBefore(child, span);
    }
    span.Remove();
}



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