XPath "Not". 특정 태그가있는 브랜치 무시

html-agility-pack xpath

문제

HTML 애자일 팩에 웹 페이지를로드하고 DOM이 있습니다. XPath를 사용하여 페이지의 모든 텍스트를 가져오고 싶습니다 (그러나 <script> 태그 내에있는 JavaScript는 제외).

나는 그 안에 <script> 가있는 브랜치 내의 모든 태그를 무시하기 위해 // text ()와 'not'가 필요하다.

나는 노력했다.

doc.DocumentNode.SelectNodes("//text()[not(self::script)]"))

doc.DocumentNode.SelectNodes("//text()[not(self::script)]"))

하지만 둘 다 작동하지 않습니다. 반환하는 노드의 XPath 속성 예는 다음과 같습니다 (스크립트 주목)

doc.DocumentNode.SelectNodes("//text()[not(self::script)]"))

나는이 두 포스트와상의했다.

XPath에서 'not'일치를 수행 할 수 있습니까?

Html 민첩성 팩으로 HTML에서 모든 텍스트를 가져옵니다 (이것은 좋은 게시물이지만 JS를 가져옵니다)

어떤 제안?

수락 된 답변

첫 번째 시도는 스크립트 요소 인 모든 텍스트 노드를 거부하고 두 번째 시도는 스크립트 노드 하위가있는 모든 텍스트 노드를 거부합니다. 물론, 두 경우 모두 조건은 사실이 아닙니다.

당신은 당신의 요구 사항을 명확하게 설명하지는 못했지만 부모로서 스크립트 요소를 가진 모든 텍스트 노드를 거부하고 싶습니다.

//text()[not(parent::script)]

또는

//text()[not(parent::script)]



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