1

假设我有这个 HTML:

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

在“分数”一词之后插入(例如)锚标记的最佳方法是什么?注意:我想根据 DOM 操作(例如使用 Hpricot)而不是根据文本操作(例如,没有正则表达式)来执行此操作

4

2 回答 2

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>
于 2009-12-06T21:58:57.783 回答
0

我对红宝石不是很流利。但通常你应该有: Element div - 和 TextNode “四分七年前”

现在,如果你想插入一些东西,你将不得不:

  • 使用文本搜索/拆分功能将文本节点中的文本一分为二(原应更改为“四分”)
  • 创建一个元素
  • 用其余的文本创建一个新的文本节点
  • 将 a 元素附加到 div 元素,然后附加新创建的文本节点
于 2009-09-01T23:15:35.993 回答