HtmlAgilityPack을 사용하여 HtmlNode 내부의 HtmlNode 제거하기

c# html html-agility-pack nodes removechild

문제

번호 노드와 그 값을 집에서 어떻게 제거합니까?

문서 :

<number>123456</number>
<house> <number> </number>Red</house>
<house> <number>12</number>Blue</house>
<number>345345</number>
etc...

암호:

<number>123456</number>
<house> <number> </number>Red</house>
<house> <number>12</number>Blue</house>
<number>345345</number>
etc...

결과:

<number>123456</number>
<house> <number> </number>Red</house>
<house> <number>12</number>Blue</house>
<number>345345</number>
etc...

필수 결과

<number>123456</number>
<house> <number> </number>Red</house>
<house> <number>12</number>Blue</house>
<number>345345</number>
etc...

나는 다음과 같이 사용하려고 노력했다 :

<number>123456</number>
<house> <number> </number>Red</house>
<house> <number>12</number>Blue</house>
<number>345345</number>
etc...

및이 다른 조합을 "컬렉션에서 노드를 찾을 수 없습니다"또는 아무것도 실행됩니다. 집 태그 안의 숫자가 아니라 맨 위 숫자를 선택합니다.

수락 된 답변

노드를 직접 제거하지 않는 이유는 무엇입니까?

var numbers = htmlDoc.DocumentNode.SelectNodes("//house/number");
if (numbers != null) {
    foreach(var node in number) 
        node.Remove();
}

어쨌든 XPath가 모든 노드를 선택하는 이유는 현재 노드에 상대적인 경로를 제공해야하기 때문입니다.

var numbers = htmlDoc.DocumentNode.SelectNodes("//house/number");
if (numbers != null) {
    foreach(var node in number) 
        node.Remove();
}



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