使用ruby中的Nokogiri从XML中提取,使用br从div中提取
我想从xml中提取标签div中的文本部分,并考虑回车。在ruby中使用以下代码使用ruby中的Nokogiri从XML中提取,使用br从div中提取,ruby,xml,parsing,nokogiri,Ruby,Xml,Parsing,Nokogiri,我想从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 问题是,在数
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>
示例1
示例2
例3
当我在这段代码上运行此命令时,我正在构建此数组:
[“示例1示例2”、“示例3”]
我想考虑一下这方面的br:
[“示例1”、“示例2”、“示例3”]我希望我能正确地实现您的期望。首先,去掉ruby中的php:
parrafo = Array.new()
contenido.each do |par|
parrafo.push(par.text)
end
这是如何用ruby重写的:
parrafo = contenido.map(&:text)
在这里,我们从contenido
到par.text
中的每一项。现在您有了一系列文本。您可以使用回车键加入其中:
parrafo_with_cr = parrafo.join($/)
#⇒ "First line\nsecond line\n..."
以上内容将使用平台无关分隔符$/
连接行。专门加入,例如,\n
:
parrafo_with_cr = parrafo.join("\n")
希望能有帮助
UPD更新问题(按
标签打断):
contenido=doc.css('div').css('span').map do|i|
i、 内部html.split(/
/)
end.flatte-[“”]
#⇒ [
#[0]“示例1”,
#[1]“示例2”,
#[2]“示例3”
#]
后面的-['']
在这里删除了
在
的最开始部分中产生的空元素
旁注:您的HTML无效,
标记没有结束同级标记。您应该发布您正在处理的XML的示例以及您希望从中获得的结果。这就是问题所在。我正在编辑答案谢谢。解决方案规则,但数组现在是这样:[“示例1”、“
示例2”、“示例3”]我只想要文本。
contenido = doc.css('div').css('span').map do |i|
i.inner_html.split(/<br>/)
end.flatten - ['']
#⇒ [
# [0] "example1",
# [1] "example2",
# [2] "example3"
#]