2011-01-05 3 views
1

webbrowser 컨트롤과 htmlElementcollection 클래스를 사용하여 양식 내의 모든 HTML을 가져옵니다. 나는이 함수를 모든 것을 골격에 넣고, 라벨이 발견되면 'For'속성에 값을 저장하고 라벨의 텍스트 값을 저장해야한다. 입력 요소가 발견되면 변수의 ForID에 저장된 텍스트가 이름에 포함되어 있는지 확인해야합니다 (추가 할 경우).HtmlElement.GetAttribute ("for") 빈 문자열을 반환합니다.

코드 :

private string logLabelInputs(HtmlElementCollection collection) { 
     StringBuilder sb = new StringBuilder(); 
     var forID = ""; 
     var labelValue = ""; 
     foreach (HtmlElement item in collection) { 
      if (item.TagName.ToLower() == "label") { 
       forID = item.GetAttribute("for"); 
       forID = forID == "" ? item.GetAttribute("FOR") : forID; 
       labelValue = item.InnerText; 
      } 
      if (item.TagName.ToLower() == "input") { 
       if(item.Name.Contains(forID)) { 
        sb.Append(labelValue + ": " + item.Name + "\r\n\r\n"); 
       } 
      } 
      if (item.All.Count > 0) { 
       sb.Append(logLabelInputs(item.All)); 
      }    
     } 
     return sb.ToString(); 
    } 

private void button4_Click(object sender, EventArgs e) { 
     HtmlElementCollection tagsCollection = webBrowser1.Document.GetElementsByTagName("form"); 
     textBox1.Text = logLabelInputs(tagsCollection); 
    } 

은 그래서 happpens하는 FORID 항상 비어 있다는 것입니다. 값이 올바르게 저장됩니다. 대문자와 소문자가 맞는지 확인하십시오 (터프가 i는 소문자로 알고 있습니다)

아무에게도 아이디어가 있습니까?

답변

0

jQuery 또는 Prototype과 같은 자바 스크립트 프레임 워크를 사용하는 것이 좋습니다. 이 자바 스크립트는 크로스 브라우저가 될 것입니다.

1

사용이 :

item.GetAttribute("htmlfor") 
관련 문제