Я использую Savon для запросов SOAP, и в каком-то месте XML-запроса SOAP мне нужно сгенерировать это кусок кода:
<content>
<item a="1" b="0"/>
<item a="2" b="0"/>
<item a="3" b="0"/>
</content>
Как лучше всего это сделать?
Я использую Savon для запросов SOAP, и в каком-то месте XML-запроса SOAP мне нужно сгенерировать это кусок кода:
<content>
<item a="1" b="0"/>
<item a="2" b="0"/>
<item a="3" b="0"/>
</content>
Как лучше всего это сделать?
Я нашел решение.
soap.body = {
#... other tags
"content" => {
"item" => ["", "", ""],
:attributes! => {
"item" => {
"a" => ["1", "2", "3"],
"b" => ["0", "0", "0"]
}
}
}
#... other tags
}
Savon v0.9.7 поставляется с улучшенной поддержкой Builder, и я рекомендую использовать его. вместо того, чтобы пытаться форсировать атрибуты через хэши, потому что это более читабельно:
soap.body do |xml|
xml.content do
xml.item(:a => "1", :b => "0")
xml.item(:a => "2", :b => "0")
xml.item(:a => "3", :b => "0")
end
end
Вы можете сделать что-то вроде:
def content
xml = Builder::XmlMarkup.new
xml.content do
xml.item(:a => "1", :b => "0")
xml.item(:a => "2", :b => "0")
xml.item(:a => "3", :b => "0")
end
end