gpt4 book ai didi

ruby - 在 Ruby 中访问 Hash of Hash of Hash

转载 作者:太空宇宙 更新时间:2023-11-03 17:55:16 27 4
gpt4 key购买 nike

我正在尝试获取在 xlm 中传递的事件日志条目,将它们转换为散列,然后存储到数据库中。

我目前正在使用 XmlSimple gem 将 xml 输入转换为散列。

测试样本输入:

require 'xmlsimple'

h = XmlSimple.xml_in('
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="Service Control Manager" Guid="{555908d1-a6d7-4695-8e1e-26931d2012f4}" EventSourceName="Service Control Manager" />
</System>
</Event>
', { 'KeyAttr' => 'name' })


puts "#{h}"

返回:

{"xmlns"=>"http://schemas.microsoft.com/win/2004/08/events/event", "System"=>[{"Provider"=>[{"Name"=>"Service Control Manager", "Guid"=>"{555908d1-a6d7-4695-8e1e-26931d2012f4}", "EventSourceName"=>"Service Control Manager"}]}]}

如何访问系统提供程序 GUID?

我可以通过以下方式返回所有系统元素:

puts "#{h['System']}"

不过

puts "#{h['System']['Provider'}"

返回:

can't convert String into Integer (TypeError)

我试过将结果转换为字符串,但没有成功。我的 XmlSimple 格式有误吗?我访问了错误的 key 吗?还有另一种方法吗?

感谢您的帮助!

最佳答案

"System"开头的[]表示它的值是一个哈希数组。你可以这样做:

puts "#{h['System'][0]['Provider'}"

同时 "Provider" 本身是一个数组,所以你必须对它做同样的事情,例如:

puts "#{h['System'][0]['Provider'][0]['Guid']"

关于ruby - 在 Ruby 中访问 Hash of Hash of Hash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15284737/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com