2011-11-19 9 views
0

양식에 대한 데이터를 가져와서 아래에 작성했습니다. 내가보다는 예기치 않은 노드/양식을 전체 HTML 파일에서 데이터를 얻을 수 그러나 그것은htmlagilitypack의 양식에서 필드 가져 오기

doc.DocumentNode.SelectNodes("//form[@name='F1']//input[@name]"); 

두 단계로 그것을 깨는 작업

var node = doc.DocumentNode.SelectSingleNode("//form[@name='F1']"); 
var nodes = node.SelectNodes("//input[@name]"); 

했다 didnt한다. 그 양식의 결과 만 얻으려면 어떻게해야합니까? 나는 과 을 내게 줬다.

답변

3

이것은 Html Agility Pack에서 <form> 태그 구문 분석의 기본 동작으로 보입니다. 그들은 here을 말했듯이 : 많은 HTML 페이지가 중복되는 형태를 가지고 사용했기 때문에이 원래 HTML의 (강력한) 기능은 실제로이었다 로

FORM은이 같은 처리됩니다. 이제 XML 과 XHTML이 존재하므로 모두 겹치는 것은 오류라고 가정하지만 (HTML 3.2에 있음).

사용하여 변경할 수 :

HtmlNode.ElementsFlags.Remove("form"); 

하고 "//form[@name='F1']//input[@name]" 표현이 작동합니다. 또는 두 번째 식을 ".//input[@name]"으로 변경하면 작동합니다.

var node = doc.DocumentNode.SelectSingleNode("//form[@name='F1']"); 
var nodes = node.SelectNodes(".//input[@name]"); 
관련 문제