在保留标签的同时对html输出进行字符串操作

时间:2013-12-18 21:57:29

标签: html ruby string nokogiri

我想对HTML字符串的:进行简单的拆分,同时保留基础HTML格式。

假设我有这样的数据结构,用HTML呈现:

  

b列列a:数据的数据

但底层HTML可能是

<p>Data for <span style="font-weight: bold">column a: data</span> for column b</p>

我的输出最好是

cola = '<p>Data for <span style="font-weight: bold">column a</span></p>'
colb = '<p><span style="font-weight: bold">data</span> for column b</p>'

或更复杂的例子。

我正在使用Ruby&amp;引入nokogiri。

2 个答案:

答案 0 :(得分:0)

doc = Nokogiri::HTML::fragment '<p>Data for <span style="font-weight: bold">column a: data</span> for column b</p>'

a, b = doc.css('span').text.split ':'

cola = '<p>Data for <span style="font-weight: bold">' + a + '</span></p>'
colb = '<p><span style="font-weight: bold">' + b + '</span> for column b</p>'

答案 1 :(得分:0)

我最终解决了这个问题。 My solution on Github

基本上,我对Nokogiri片段进行了前序遍历,只搜索文本节点,直到找到分隔符。一旦找到,我就像分割任何字符串一样拆分文本节点。然后我删除了在前序遍历期间遇到的所有节点。这清除了“右侧”。

然后我跟着对同一个初始Nokogiri片段的后序遍历,如上所述,删除所有节点,直到我遇到包含我的分隔符的文本节点。这清除了“左侧”

相关问题