Ci sono molti esempi di come rimuovere tag HTML da un documento usando Ruby, Hpricot e Nokogiri hanno metodi inner_text che rimuovono tutto l'HTML per te facilmente e rapidamente.Striscia di testo da un documento HTML usando Ruby
Quello che sto cercando di fare è l'opposto, rimuovere tutto il testo da un documento HTML, lasciando solo i tag e i loro attributi.
Ho preso in considerazione il passaggio dall'impostazione del documento inner_html a zero, ma in realtà dovresti farlo in senso inverso in quanto il primo elemento (root) ha un inner_html dell'intero resto del documento, quindi idealmente avrei iniziare dall'elemento più interno e impostare inner_html su zero mentre si muove attraverso gli antenati.
Qualcuno sa un piccolo trucco per farlo in modo efficiente? Stavo pensando che forse la regex potrebbe farlo ma probabilmente non con la stessa efficienza di un tokenizzatore/parser HTML.
Hai intenzione di avere a che fare con un brutto markup? (entità senza escape, ecc.) – Neall
È possibile - il markup che sto elaborando proviene dagli utenti finali quindi non può essere considerato affidabile. – davidsmalley