HTML Agility Pack을 사용하여 단일 노드를 여러 노드로 대체

.net c# html-agility-pack

문제

일부 HTML로 대체 할 자리 표시자인 일부 입력 태그가 있습니다. 많은 HTML 태그를 하나의 태그로 대체하는 것만으로도 충분합니다.

HtmlNode node = HtmlNode.CreateNode(sReplacementString);
inputNode.ParentNode.ReplaceChild(node, inputNode);

그러나 inputNode 를 두 개 이상의 노드로 대체하려는 경우 HtmlNode.CreateNode(sReplacementString) 는 첫 번째 노드 만 읽습니다. sReplacementString 이 여러 태그 인 경우 대체 할 수 있습니까?

수락 된 답변

내가 아는 한, 직접 할 방법이 없습니다. HtmlNode.CreateNode 메서드는 HTML 조각에서 단일 노드를 만듭니다. 여러 노드가있는 경우 첫 번째 노드 만 만들어집니다.

해결 방법으로는, 임시 노드를 만들 수에서 자식 노드를 만들 sReplacementString 한 다음 바로 후 이러한 자식 노드를 추가 inputNode 노드, 그리고 마지막으로 제거 inputNode .

var temp = doc.CreateElement("temp");
temp.InnerHtml = sReplacementString;
var current = inputNode;
foreach (var child in temp.ChildNodes)
{
    inputNode.ParentNode.InsertAfter(child, current);
    current = child;
}
inputNode.Remove();


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