C #에서 HTML 소스의 클래스 또는 ID별로 요소를 가져 오는 방법?

c# html html-agility-pack parsing

문제

클래스 또는 ID 이름을 기반으로 HTML 소스의 요소를 C # Windows 양식 응용 프로그램을 사용하여 가져 오려고합니다. 내가 WebClient를 사용하여 문자열에 소스를 넣고 HTMLAgilityPack에 HtmlDocument를 사용하여 연결합니다.

그러나 HTMLAgilityPack 팩을 사용하여 찾은 모든 예제는 태그를 기반으로 항목을 찾아 구문 분석합니다. html로 링크 된 특정 id를 찾고 태그 내부의 값을 검색해야합니다. 이것이 가능하며 가장 효율적인 방법은 무엇입니까? ID를 파싱하려고하는 모든 것이 예외가됩니다. 감사!

수락 된 답변

XPath로이 작업을 수행 할 수 있어야합니다.

HtmlDocument doc = new HtmlDocument();
doc.Load(@"file.htm");

HtmlNode node = doc.DocumentNode.SelectSingleNode("//*[@id=\"my_control_id\"]");
string value = (node == null) ? "Error, id not found" : node.InnerHtml;

여기에 xpath에 대한 간단한 설명이 있습니다.

  • // 경로의 어디에서나 검색을 의미합니다. SelectNodes 가 일치하는 배수이면 사용하십시오.
  • * 는 모든 유형의 노드와 일치 함을 의미합니다.
  • [] 기본적으로이 노드와 관련된 속성을 검사하는 "술어"를 정의합니다.
  • [@id=\"my_control_id\"] 는 값이 "my_control_id"인 "id"라는 속성이있는 노드를 찾는 것을 의미합니다.

추가 참조



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