Come posso modificare il DOM da una stringa di codice HTML in C#?

Per il momento, il modo migliore che ho trovato per essere in grado di manipolare il DOM da una stringa che contiene l’HTML è:

WebBrowser webControl = new WebBrowser();
webControl.DocumentText = html;
HtmlDocument doc = webControl.Document;

Ci sono due problemi:

  1. Richiede la WebBrowser oggetto!
  2. Questo non può essere usato con più thread; ho bisogno di qualcosa che avrebbe funzionato su un thread diverso (diverso dal thread principale).

Tutte le idee?

InformationsquelleAutor Patrick Desjardins | 2008-10-23

4 risposte

  1. 17

    Ho fatto una ricerca al GooglePlex per HTML e ho trovato Html Agilità Pack non so se è per questo o no, sto scaricando proprio ora di dare una prova.

    Html Agilità Pack è impressionante
    Idem mi stavo circa a raccomandare l’uso di HTML Tidy per ottenere il documento in buona forma e poi trasformarlo in un XmlDocument, ma forse si può ignorare che con l’HTML Agilità Pack. Roba buona.
    Agilità pack funzionano bene con HTML e filo! Ho ottenuto la mia risposta! Thx a tutti!!!
    Sì, +1 per il HtmlAgilityPack. Stare sulle spalle dei giganti!
    Html Agilità Pack PASSEGGINO!!!!! non puoi modificare il codice html . è un bene, se non modificare il codice html . html modifica ( insertafter , replacenode ) NON funziona . csQuery sembra più promettente

    InformationsquelleAutor Patrick Desjardins

  2. 7

    A seconda di che cosa si sta cercando di fare (magari puoi darci maggiori dettagli?) e a seconda se o non il codice HTML è corretto, potrebbe convertire questo in un XmlDocument:

    System.Xml.XmlDocument x = new System.Xml.XmlDocument();
    x.LoadXml(html); //as long as html is well-formed, i.e. XHTML

    Allora si potrebbe manipolare facilmente, senza WebBrowser istanza. Come per il thread, non so abbastanza sull’attuazione della XmlDocument conoscere la risposta a quella parte.


    Se il documento non è in forma corretta, si potrebbe utilizzare NTidy (.Legatore per HTML Tidy) ricevere in forma di prima; ho dovuto fare questa cosa per un progetto una volta e che davvero non era troppo male.

    Il documento potrebbe non essere ben formattato questo è il motivo per cui XmlDocument potrebbe non funzionare, ma apprezzo l’alternativa.

    InformationsquelleAutor Jason Bunting

  3. 6

    JasonBunting già postato questo, ma funziona davvero per l’utilizzo di un .net wrapper HTML tidy, e di caricare in un XmlDocument.

    Ho usato questo .legatore a prima :

    http://www.codeproject.com/KB/cs/ZetaHtmlTidy.aspx

    E implementato un po ‘ come questo:

    string input = "<p>crappy html<br <img src=foo></div>";
    HtmlTidy tidy = new HtmlTidy()
    string output = tidy.CleanHtml(input, HtmlTidyOptions.ConvertToXhtml);
    XmlDocument doc = new XmlDocument();
    doc.LoadXml(output);

    Scusate se considerato un repost 🙂

    InformationsquelleAutor Martin Kool

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *