我是ruby的新手,我正在尝试使用Nokogiri HTML构建器以HTML格式打印数组内容。
请有人指点我的方向。
提前致谢。
我到目前为止的代码是:
#!/usr/bin/env ruby
require 'rubygems'
require 'nokogiri'
a = ["Header1","Header2","Header3"]
b = [["x","y","z"],["w","q","t"]]
builder = Nokogiri::HTML::Builder.new do |doc|
doc.html {
doc.body{
doc.table {
doc.tr {
doc.td {
a.each { |v| p v }
b.each {|x| p v}
}
}
}
}
}
end
puts builder.to_html
我正在寻找的输出是:
<html>
<body>
<table>
<tr>
<td>Header1</td>
<td>Header2</td>
<td>Header3</td>
</tr>
<tr>
<td>x</td>
<td>y</td>
<td>z</td>
</tr>
<tr>
<td>w</td>
<td>q</td>
<td>t</td>
</tr>
</table>
</body>
</html>
我收到了几个错误:
C:\AWK\XMLs>ruby Nokogiri_HTMLBuilder.rb
"Header1"
"Header2"
"Header3"
Nokogiri_HTMLBuilder.rb:17:in `block (7 levels) in <main>': undefined local variable or method `v' for main:Object (NameError)
from Nokogiri_HTMLBuilder.rb:17:in `each'
from Nokogiri_HTMLBuilder.rb:17:in `block (6 levels) in <main>'
from C:/Ruby200/lib/ruby/gems/2.0.0/gems/nokogiri-1.6.2.rc2-x86-mingw32/lib/nokogiri/xml/builder.rb:391:in `call'
from C:/Ruby200/lib/ruby/gems/2.0.0/gems/nokogiri-1.6.2.rc2-x86-mingw32/lib/nokogiri/xml/builder.rb:391:in `insert'
from C:/Ruby200/lib/ruby/gems/2.0.0/gems/nokogiri-1.6.2.rc2-x86-mingw32/lib/nokogiri/xml/builder.rb:375:in `method_missing'
更新数据:
###################################################################
谢谢antpaw的帮助。我的建议越来越好了。就像你说的那样!!
我现在只有问题以所需的方式打印输出。
到目前为止我有这个代码: #!/ usr / bin / env ruby 要求'rubygems' 要求'nokogiri'
a = ["Header1","Header2","Header3"]
b = [["x","y","z"],["w","q","t"]]
builder = Nokogiri::HTML::Builder.new do |doc|
doc.html {
doc.body{
doc.table {
doc.tr {
a.each { |v| doc.td { doc.text(v) } }
}
doc.tr {
b.each { |v| v.each { |z| doc.td { doc.text(z) } } }
}
}
}
}
end
puts builder.to_html
我收到了这个输出(第2行和第3行合并为一个,应该分开):
<html>
<body>
<table>
<tr>
<td>Header1</td>
<td>Header2</td>
<td>Header3</td>
</tr>
<tr>
<td>x</td>
<td>y</td>
<td>z</td>
<td>w</td>
<td>q</td>
<td>t</td>
</tr>
</table>
</body>
</html>
和我正在寻找的输出是:
<html>
<body>
<table>
<tr>
<td>Header1</td>
<td>Header2</td>
<td>Header3</td>
</tr>
<tr>
<td>x</td>
<td>y</td>
<td>z</td>
</tr>
<tr>
<td>w</td>
<td>q</td>
<td>t</td>
</tr>
</table>
</body>
</html>
感谢目前为止提供的帮助
第二次更新:
#------------------------------------------------------------------#
再次问好,
我能够获得所需的输出。我只想在Headers和包含colspan和类的td之前添加一些空的td 但我没有正确添加colspan和类。请你帮帮我。
这是我到目前为止的代码,它的工作除了注释行'。
对于注释行,我想获得此输出:
<td colspan="3" class="MyClass">Some text</td>
我到目前为止的代码:
builder = Nokogiri::HTML::Builder.new do |doc|
doc.html {
doc.body{
doc.table {
doc.tr {
doc.td {}
doc.td {}
#doc.td {colspan "3"; doc.text("Org")} #Here I want to add a colspan and class
a.each { |v| doc.td { doc.text(v) } }
}
b.size.times do |j|
doc.tr {
b.inject(0) {|m,l| [m, l.size].max}.times do |i|
doc.td {
doc.text("#{b[j][i]}")
}
end
}
end
}
}
}
end
puts builder.to_html
再次感谢您的帮助。
答案 0 :(得分:0)
b.each {|x| p v}
必须为b.each {|v| p v}
但是这不会给你html,试试这个
a.each {|v| doc.text(v) }
b.each {|v| doc.text(v)}