Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用join/each-ruby连接变量_Ruby_Nokogiri - Fatal编程技术网

使用join/each-ruby连接变量

使用join/each-ruby连接变量,ruby,nokogiri,Ruby,Nokogiri,我试图找出如何将一些XML转换成一个可读性好的语句。我目前正在使用Nokogiri,在尝试执行以下操作时遇到了问题: <baz> <option id="foo">Hello</option> <option id="bar">World</option> </baz> baz has options: 'Foo' = 'Hello', 'Bar' = 'World' 我要转换以下内容: <baz&

我试图找出如何将一些XML转换成一个可读性好的语句。我目前正在使用Nokogiri,在尝试执行以下操作时遇到了问题:

<baz>
    <option id="foo">Hello</option>
    <option id="bar">World</option>
</baz>
baz has options: 'Foo' = 'Hello', 'Bar' = 'World'
我要转换以下内容:

<baz>
    <option id="foo">Hello</option>
    <option id="bar">World</option>
</baz>
baz has options: 'Foo' = 'Hello', 'Bar' = 'World'
我目前正在使用以下代码来实现这一点,但我觉得一定有更好的方法使用join,我似乎无法理解

optText = "baz has options:"
baznode.xpath("option").each { |opt| 
   optText << "'#{opt.xpath("@id").text}' = '#{opt.text}', "
}
optText << args[0..-3] << "\n"
optText=“baz有选项:”
xpath(“option”)。每个{opt}

optText除了可能使用
collect
/
join
之外,我看不出使用它有什么好处

opts = baznode.xpath("option").collect do |opt|
         "'#{opt.xpath("@id").text}' = '#{opt.text}'" }
       end.join(", ")
optText = "baz has options: #{opts} #{args[0..-3]}\n"
我可能会将输出更改为类似以下内容:

baz has options:
  foo = bar
  plugh = xyzzy
当然,这完全取决于你的需要。如果有很多选项,那么扫描一行可能会有点困难,但是如果没有,原始的可能更容易在精神上解析


如果你到处都在用多个“东西”来做这件事,那么将其转换成JSON/YAML并将其转储可能是有意义的,除非你想要真正的可读文本。

除了可能使用
收集
/
加入
之外,我看不出使用它有什么好处

opts = baznode.xpath("option").collect do |opt|
         "'#{opt.xpath("@id").text}' = '#{opt.text}'" }
       end.join(", ")
optText = "baz has options: #{opts} #{args[0..-3]}\n"
我可能会将输出更改为类似以下内容:

baz has options:
  foo = bar
  plugh = xyzzy
当然,这完全取决于你的需要。如果有很多选项,那么扫描一行可能会有点困难,但是如果没有,原始的可能更容易在精神上解析


如果你到处都在用多个“东西”做这件事,那么将其转换成JSON/YAML并转储它可能是有意义的,除非你想要真正的人类可读文本。

是的,谢谢。我实际上是在将XML解析成人类可读的文本,仅此而已,转储更多的“报告”样式输出。谢谢你的建议。是的,谢谢。实际上我正在将XML解析为人类可读的文本,仅此而已,以转储更多的“报告”样式输出。谢谢你的建议。