在没有ActiveSupport依赖关系的情况下,任何人都知道将XML转换为哈希的便捷方法吗? ActiveSupport确实有Hash.from_xml,但是避免使用ActiveSupport?
答案 0 :(得分:0)
如果您不想要整个Active Support库,gyoku
gem可能会有所帮助。
Gyoku.xml(:find_user => { :id => 123, "v1:Key" => "api" })
还有to_xml
gem,它使用Hash
方法扩展#to_xml
对象。快速说明:这个to_xml
gem似乎与Ruby on Rails不兼容。
此外,如果您不想添加任何宝石,您可以自己定义序列化:
module Xml
extend self
def serialize(object)
object.map do |key, value|
noderize(key, value)
end
end
def noderize(key, value)
if value.class == Hash
node_value = serialize(value).join
else
node_value = value.nil? ? "" : value
end
"<#{key}>#{node_value}</#{key}>"
end
end
puts Xml.serialize({
name: "Vinicius",
username: "vnbrs",
address: {
country: {
name: "Brazil",
dial_code: 55
},
street: "R Jose Ananias Mauad",
street_number: nil,
}
})
那产出:
<name>Vinicius</name>
<username>vnbrs</username>
<address>
<country>
<name>Brazil</name>
<dial_code>55</dial_code>
</country>
<street>R Jose Ananias Mauad</street>
<street_number></street_number>
</address>