如果您有哈希:
{"0" => "value"}
然后你把它变成XML:
{"0" => "value"}.to_xml
返回:
<?xml version="1.0" encoding="UTF-8"?>
<hash>
<0>value</0>
</hash>
这导致Chrome和许多其他XML解析器窒息,因为节点名是一个整数。有没有人有一个聪明/简单的解决方案来解决这个问题?我正在使用respond_with
和一个哈希,如果我不必在我的控制器中破坏该约定,那么就要加分。
答案 0 :(得分:1)
您必须将密钥/节点名更改为非数字字符串,以使其成为有效的XML元素。
假设你可以在节目名前加上&#34;数字&#34;:
new_hash = {}
hash.each do |k, v|
new_hash.merge!( k.gsub(/^\d/, "Digit#{k[0]}" ) => v )
end
new_hash.to_xml