我的代码中有一个Ruby哈希,我使用to_xml
转换为XML。一切似乎都很好,除了API我发送请求要求附加到根节点的选项。例如:
request = {
"Header" => "",
"Body" => {
"GetOrders" => {
"workorderList" => {
"string" => "value"
},
"clientID" => ENV['CLIENT_ID'],
"clientPassword" => ENV['CLIENT_PASSWORD']
}
}
}
在这个Ruby哈希上调用to_xml
可以像我期望的那样转换XML。当我调用to_xml
时,我传递了一个root选项。但是,如何向根节点添加选项,以便代替看起来像这样的根节点(来自.to_xml(root: 'Envelope')
):<Envelope>
它看起来像<Envelope option="value">
。
我知道还有其他的宝石和XML构建器,但我只需要能够简单地将这些选项添加到XML的根节点。
如何在Ruby&amp;中快速完成导轨?
答案 0 :(得分:1)
Rails Hash#to_xml
确实屈服于一个块:
request.to_xml do |options, key|
# options[:builder] gives the builder for the node
end
但我认为你超出了这个实用程序方法的简单用例。
虽然有可能使用它来添加属性,但使用XML解析器可能更简单,更具前瞻性--Rails已经包含Nokogiri。
require 'nokogiri'
doc = Nokogiri::XML(request.to_xml(root: 'Envelope'))
doc.at_css('Envelope')['options'] = "value"
doc.to_xml