将 XML 转换为带属性的 ruby​​ 哈希

2024-04-24

客观的 :

将 XML 转换为 ruby​​ Hash ,包含所有节点和属性值

我尝试了什么:

xml  = 
  '<test id="appears">
    <comment id="doesnt appear">
      it worked
    </comment>
    <comment>
     see!
    </comment>
    <comment />
  </test>'

hash = Hash.from_xml(xml)

现在我得到这个哈希值

#=>{"test"=>{"id"=>"appears", "comment"=>["it worked", "see!", nil]}}

请注意第一个注释元素上的 id 属性没有出现。

如何解决这个问题?


主动支持 XMLConverter 类存在问题 请将以下代码添加到任何初始化程序文件中。

module ActiveSupport
    class XMLConverter
        private
            def become_content?(value)
                value['type'] == 'file' || (value['__content__'] && (value.keys.size == 1 && value['__content__'].present?))
            end
    end
end

它会给你如下的输出。

Ex 输入 XML

xml = '<album>
   <song-name type="published">Do Re Mi</song-name>
</album>'

Hash.from_xml(xml)

输出将是

{"album"=>{"song_name"=>{"type"=>"published", "__content__"=>"Do Re Mi"}}}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 XML 转换为带属性的 ruby​​ 哈希 的相关文章

随机推荐