Il existe de nombreux exemples de manière à supprimer des balises HTML à partir d'un document utilisant Ruby, Hpricot et Nokogiri ont des méthodes intérieures_text qui suppriment tout HTML pour vous facilement et rapidement. P>
Ce que j'essaie de faire est le contraire, supprimez tout le texte d'un document HTML, laissant simplement les balises et leurs attributs. P>
J'ai considéré comme une boucle via le paramètre de document inner_html à nil, mais vous devriez alors le faire en sens inverse car le premier élément (racine) a un inner_html de tout le reste du document, donc idéalement que je devrais avoir à Commencez à l'intérieur le plus interne et réglez inner_html à Nil tout en vous déplaçant à travers les ancêtres. P>
Est-ce que quelqu'un connaît une petite astuce soignée pour le faire efficacement? Je pensais peut-être que les regexs pourraient le faire, mais probablement pas aussi efficacement qu'un tokéniseur / analyseur HTML. P>
4 Réponses :
Vous pouvez numériser la chaîne pour créer un tableau de "jetons", puis sélectionnez ceux qui sont des balises HTML: == EDIT == P> Ou encore mieux, il suffit de numériser les balises HTML;) p>
Pour saisir tout ce qui n'est pas dans une étiquette, vous pouvez utiliser Nokogiri comme ceci: bien sûr, qui prendra des trucs comme le contenu de
Allez-vous devoir faire face à une mauvaise balise? (entités non évaluées, etc.)
Il est possible - le balisage que je traite provient des utilisateurs finaux, donc ne peut pas être invoqué.