我想从xml中提取标签div内部的文本部分,同时考虑回车符。在ruby中使用以下代码。
_self
问题是在数组中我存储了所有没有回车的文本,我想在一个不同的数组位置放入用回车分隔的文本的每个部分。
例如,假设我有这个xml:
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
当我在这段代码上运行时,我正在构建这个数组:
[ “example1example2”, “示例3”]
我想考虑到这个问题:
[ “例1”, “示例2”, “示例3”]
答案 0 :(得分:0)
我希望我得到你期望的正确实现。首先,摆脱ruby中的这个php:
parrafo = Array.new()
contenido.each do |par|
parrafo.push(par.text)
end
这是如何在ruby中重写的:
parrafo = contenido.map(&:text)
我们contenido
到par.text
中的每个项目map
。现在你有了一系列文本。您可以通过回车加入它们:
parrafo_with_cr = parrafo.join($/)
#⇒ "First line\nsecond line\n..."
以上将使用与平台无关的分隔符$/
来连接行。要专门加入,例如\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>
s的最开头删除由<span>
生成的空元素。
旁注:您的HTML无效,<br>
代码没有关闭兄弟。