2011-01-05 9 views
1

webbrowserコントロールとhtmlElementcollectionクラスを使用して、フォーム内のすべてのhtmlを取得しています。私はこの機能をすべてのものにループさせました。ラベルが見つかった場合は、 'For'属性の値とラベルのテキスト値を保存する必要があります。 input要素が見つかった場合、その要素の名前に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は常に空であることです。値は正しく保存されます。私は大文字と小文字をチェックします(難しいですが、小文字は知っています)

ANoneにはこれに関するアイデアはありますか?

答えて

0

jQueryPrototypeなどのjavascriptフレームワークを使用する方がよいでしょう。 このjavascriptはクロスブラウザになります。

1

これを使用する:

item.GetAttribute("htmlfor") 
関連する問題