XPath로 텍스트를 포함한 모든 노드 선택하기

c# html-agility-pack xpath

문제

나는 지난 며칠 동안이 문제를 해결하기 위해 고심하고있다. 말하자면, HTML 문서에서 모든 text ()를 가져오고 싶지만 텍스트 데이터가 포함 된 노드의 XPath 만 알고 검색해야합니다. 예:

 foreach (var textNode in node.SelectNodes(".//text()")) 
 //do stuff here 

그러나 textNode.XPath를 사용하여 textNode.XPath 의 XPath를 검색 할 때 #text 노드를 포함한 전체 XPath를 얻습니다.

/html[1]/body[1]/div[1]/a[1]/#text

그러나 텍스트의 포함 노드 만 원할뿐입니다. 예를 들면 다음과 같습니다.

/html[1]/body[1]/div[1]/a[1]

누구든지 텍스트가 포함 된 모든 노드를 검색하지만 포함 노드까지 XPath 만 검색하는 더 나은 XPath 솔루션을 지적 할 수 있습니까?

수락 된 답변

너 왜 그래?

string[] elements = getXPath(textNode).Split(new char[1] { '/' });
return String.Join("/", elements, 0, elements.Length-2);

인기 답변

대신 :

.//text() 

사용 :

.//*[normalize-space(text())]

이렇게하면 적어도 하나의 공백이 아닌 텍스트 노드 하위가있는 컨텍스트 (현재) 노드의 모든 "리프 요소"- desccendants가 선택됩니다.



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