从xml提取的uby中的诺科吉里(Nokogiri)从带有br的div提取



我想从XML中提取标签div内部文本的一部分,考虑到托架返回。在Ruby中使用以下代码。

doc = Nokogiri::HTML(xmlpost.content)
contenido = doc.css('div').css('span')
parrafo = Array.new()
contenido.each do |par|
  parrafo.push(par.text)
end
parrafo_json = parrafo.to_json
return parrafo_json

问题是,在数组中,我存储了所有文本而无需返回马车,我想将不同的数组位置放置在不同的阵列位置,每个部分都以托架返回分隔。

例如,假设我有这个xml:

<div><span><br>example1</br><br>example2</br></span></div>
<div><span>example3</span></div>

当我在此代码上运行此数字时,我将构建此数组:

[" example1example2"," example3"]

我想考虑到这一点的BR:

[" example1"," example2"," example3"]

我希望我能得到您期望正确实现的目标。首先,摆脱Ruby内部的PHP:

parrafo = Array.new()
contenido.each do |par|
  parrafo.push(par.text)
end

这就是在Ruby中重写的方式:

parrafo = contenido.map(&:text)

在这里我们map contenido中的每个项目至par.text。现在您有了一系列文本。您可以加入马车回报:

parrafo_with_cr = parrafo.join($/)
#⇒ "First linensecond linen..."

上面将使用平台 - 不合稳定分离器$/连接线路。专门加入n

parrafo_with_cr = parrafo.join("n")

希望它有帮助。

upd 对于更新的问题(<br>标签中断):

contenido = doc.css('div').css('span').map do |i|
  i.inner_html.split(/<br>/)
end.flatten - ['']
#⇒ [
#  [0] "example1",
#  [1] "example2",
#  [2] "example3"
#]

后者- ['']这里删除了<br><span>S。

开始时产生的空元素。

sidenote:您的HTML无效,<br>标签没有关闭的兄弟姐妹。

最新更新