如何在现有节点中插入DOM节点特定字符索引(使用Hpricot或类似的Ruby库)

时间:2009-09-01 22:09:02

标签: ruby-on-rails ruby dom hpricot

假设我有这个HTML:

html = <div>Four score and seven years ago</div>

在“得分”一词之后插入(比方说)锚标记的最佳方法是什么?注意:我想在DOM操作(使用Hpricot,例如)而不是方面进行文本操作(例如,无正则表达式

2 个答案:

答案 0 :(得分:1)

require 'rubygems'
require 'nokogiri'

doc = Nokogiri::XML(DATA)
text = doc.xpath('//text()').first
text.content =~ /^(.*score)(.*)$/
text.content = $1
node = Nokogiri::XML::Node.new('a',doc)
text.add_next_sibling node
node.add_next_sibling Nokogiri::XML::Text.new($2,doc)

puts doc.to_xml

__END__
<div>Four score and seven years ago</div>

答案 1 :(得分:0)

我不是那种流利的红宝石。但通常你应该: 元素div - 和TextNode“四分和七年前”

现在,如果你想插入一些东西,你需要:

  • 使用文本搜索/拆分功能将文本节点中的文本拆分为两个(原始文本应更改为“四个分数”)
  • 创建元素
  • 使用文本的其余部分
  • 创建一个新的文本节点
  • 将a元素附加到div元素,然后追加新创建的文本节点