동일한 클래스 속성을 가진 HTML에서 모든 요소를 ​​가져 오는 방법은 무엇입니까?

c# html html-agility-pack xpath

문제

나는 같은 클래스 속성입니다 모든 <div> 태그를 얻기 위해 htmlagility dll을 사용하여 한 asp.net 응용 프로그램을 개발 ..
전체 HTML 페이지에서 같은 클래스를 가진 모든 요소를 ​​얻는 방법,
나는 class = 'myclass'를 가지고있는 최상위 div를 얻었지만,
내 경우에는 'myclass'클래스를 가진 모든 div 태그를 원한다.

var vardoc = web.Load("<any website url>"); 
var varmyclass = doc.DocumentNode.SelectSingleNode("//div[@class='myclass']"); 

위 메서드를 사용하면 'myclass'의 내부 HTML 내용을 가져 오지만 HTML 내용에는 클래스 'myclass'가있는 div 태그가 많이 있습니다. HTML5 또는 다른 클래스를 사용하는 동일한 클래스를 가진 모든 <div> 를 얻고 싶습니다.

수락 된 답변

이 경우 단일 노드를 선택하지 마십시오.

하나의 노드 만 리턴하는 SelectSingleNode 를 사용 중입니다.

대신에 SelectNodes 를 사용하십시오 :

var varmyclass = doc.DocumentNode.SelectNodes("//div[@class='myclass']");

인기 답변

두 가지 문제는 먼저 여러 노드를 선택하려고 했으므로 다른 대답이 지적한대로 SelectNodes() 대신 사용해야한다는 것입니다.

또한 XPath는 약간 제한적입니다. myclass 는 하나의 클래스 만 가지고 div 클래스는 여러 클래스를 포함하지 않는 div 요소 만 가져옵니다. 나는 그것들을 포함시키고 싶다고 생각합니다. 클래스가 같은지 검사하는 대신 클래스가 동일한 지 확인하십시오.

var xpath = "//div[contains(@class,'myclass')]";
var query = doc.DocumentNode.SelectNodes(xpath);



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