2017-06-01 2 views
0

J'ai un code HTML provenant d'une API que je veux nettoyer et mettre en forme.Analyse d'une balise imbriquée, déplacement à l'extérieur du parent et modification de son type à l'aide de Nokogiri

J'essaie d'obtenir des <strong> balises qui sont le premier élément dans une balise <p>, et changer pour le parent de l'étiquette <p>, et convertir la balise <p>-<h4>.

Par exemple:

<p><strong>This is what I want to pull out to an h4 tag.</strong>Here's the rest of the paragraph.</p> 

devient:

<h4>This is what I want to pull out to an h4 tag.</h4><p>Here's the rest of the paragraph.</p> 

EDIT: Toutes mes excuses pour la nature de la question étant trop «s'il vous plaît écrire pour moi. J'ai posté la solution que j'ai trouvée ci-dessous. J'ai juste dû prendre le temps d'apprendre vraiment comment Nokogiri fonctionne, mais c'est assez puissant et il semble que vous pouvez faire presque n'importe quoi avec ça.

+0

Veuillez modifier votre question pour inclure le code que vous avez écrit jusqu'à présent, ainsi qu'un exemple de l'entrée que vous utilisez et la sortie désirée. –

+0

Edité pour ajouter un exemple. – gregblass

+2

Oui, c'est possible. S'il vous plaît modifier votre question pour décrire ce que vous avez essayé jusqu'à présent. –

Répondre

0
doc = Nokogiri::HTML::DocumentFragment.parse(html) 

doc.css("p").map do |paragraph| 
    first = paragraph.children.first 
    if first.element? and first.name == "strong" 
    first.name = 'h4' 
    paragraph.add_previous_sibling(first) 
    end 
end