2013-05-19 7 views
5

Ho bisogno di ottenere tutti gli attributi dal mio webbrowser.currently, sto usando GetAttribute() ma in questo modo, ho bisogno di conoscere il nome degli attributi. Immagina di non sapere cosa c'è nel mio browser. mio codice C#:Restituisce tutti gli attributi di un HtmlElement nel browser Web

 StringWriter strWriter = new StringWriter();    
     XmlWriter xWriter = XmlWriter.Create(strWriter, new XmlWriterSettings() { Indent = true }); 
     xWriter.WriteStartElement("Items"); 
     foreach (HtmlElement el in webBrowser1.Document.GetElementsByTagName("TEXTAREA")) 
     { 
      xWriter.WriteStartElement("Item"); 
      xWriter.WriteElementString("GUID", el.Id); 
      xWriter.WriteElementString("Type", el.GetAttribute("type").ToUpper()); 
      xWriter.WriteElementString("Name", el.Name); 
      xWriter.WriteElementString("Value", el.GetAttribute("value")); 
      xWriter.WriteElementString("MaxLength", el.GetAttribute("maxlength")); 
      xWriter.WriteEndElement(); 
     } 

ho cercato un sacco, ma non ho trovato alcuna cosa utile.

+0

Ho anche provato ad utilizzare Html Agility Pack (http://htmlagilitypack.codeplex.com/wikipage?title=Examples), ma non è stata una buona soluzione tale. – Pedram

risposta

1

Non l'ho provato, ma immagino che questa potrebbe essere una soluzione o il primo passo. In primo luogo, si deve fare riferimento al microsoft.mshtml

foreach (HtmlElement el in webBrowser1.Document.GetElementsByTagName("TEXTAREA")) 
{ 

    HTMLTextAreaElement textarea = (HTMLTextAreaElement)el.DomElement; 

    xWriter.WriteStartElement("Item"); 
    xWriter.WriteElementString("GUID", el.Id); 

    foreach (var attribute in textarea.attributes) 
    { 
     String name = attribute.name; 
     String value = attribute.value; 

     xWriter.WriteElementString(name, value); 
    } 

    xWriter.WriteEndElement(); 
}