Comment puis-je ajouter un enfant à un noeud à un emplacement spécifique?
J'ai un nœud qui a deux enfants: un texte HTML et un élément HTML.
<h1 id="Installation-blahblah">Installation on server<a href="#Installation-blah" class="wiki-anchor">¶</a>
</h1>
Dans ce cas, le texte HTML est:
Installation on server
et l'élément HTML:
<a href="#Installation-blah" class="wiki-anchor">anchor;</a>
J'ai ensuite créer un nœud comme ceci:
span_node = Nokogiri::HTML::Node.new('span',doc)
span_node['class'] = 'edit-section'
link_node = Nokogiri::HTML::Node.new('a',doc)
link_node['href'] = "/wiki/#{page_id}/#{@page.title}/edit?section=#{section_index}"
link_node['class'] = 'icon icon-edit'
link_node.content = 'mylink'
span_node.add_child(link_node)
Maintenant, pour ajouter le au-dessus de noeud à noeud principal j'utilise la suite:
node.add_child(span_node)
Ceci ajoute de la durée de noeud à la fin. Comment puis-je mettre le span_node
en face de tous les enfants?
source d'informationauteur Manuel
Vous devez vous connecter pour publier un commentaire.
Grâce au Pesto pour votre presque la bonne solution.
La solution de travail est:
Vous pouvez utiliser
NodeSet#avant
comme ceci:NodeSet#before
est un raccourci de la méthode pour insérer un élément comme le premier élément. Un plus généraliste solution est d'utiliserNoeud#avant
etNoeud#après
. Par exemple,some_node.before foo
va ajouter le nœudfoo
que le frère directement avantsome_node
.Node#after
est similaire. Notez que ceci:est donc équivalente à la solution ci-dessus.
node.prepend_child span_node
Nokogiri::XML::Node#prepend_child Documentation