2013-11-11 3 views
1

Так у меня есть этот HTML (находится в некоторых XML-файле)Заменить определенный тег с другим тегом

<span style=" font-style: italic;">Nature, </span> 

Моих желаемым результата является использование Ruby, Nokogiri или CSS-селекторов, чтобы заменить тег с

<i>Nature, </i> 

Я попытался следующие:

Так что я прочитал Xml и получить содержание

page_references = doc.xpath("/wcm:root/wcm:element[@name='Citations']").inner_text 

Здесь я пытаюсь искать тега в содержании и заменить его

page_data.push (page_references.to_s.gsub!(/<span style=" font-style: italic;">/,'<i>')) 

Это не заменяет закрывающих тегов.

Есть ли у кого-нибудь какие-либо предложения о том, как я могу достичь своего желаемого результата?

ответ

0
require "nokogiri" 
doc = Nokogiri::HTML.fragment('<span style=" font-style: italic;">Nature, </span>') 

doc.css('span[style=" font-style: italic;"]') 
.each{|span| span.replace("<i>#{span.content}</i>")} 

doc.to_s # => "<i>Nature, </i>" 
+1

Благодарности Савва очень элегантный –

0

Вот как я хотел бы сделать:

require 'nokogiri' 

doc = Nokogiri::HTML.parse <<-eot 
<span style=" font-style: italic;">Nature, </span> 
eot 

node = doc.at_css('span[style=" font-style: italic;"]') 
node.replace("<i> #{node.text} </i>") 

puts doc 

Выход

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org 
    /TR/REC-html40/loose.dtd"> 
<html> 
    <body><i> Nature, </i></body> 
</html> 
+0

@devArled это [ 'node.text'] (HTTP://nokogiri.org/Nokogiri/XML/Node.html#method-i-text) ... –

Смежные вопросы