클래스 또는 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
일치하는 경우 SelectNodes
사용하십시오. *
는 모든 유형의 노드와 일치 함을 의미합니다. []
기본적으로이 노드에 상대적인 특성을 점검하는 "조건 자"를 정의하십시오. [@id=\"my_control_id\"]
는 "my_control_id"값을 가진 "id"라는 속성을 가진 노드를 찾는 것을 의미합니다.