我正在尝试获取传递到xlm中的事件日志条目,将它们转换为哈希,然后存储到数据库中。
我目前正在使用xml将XmlSimple输入转换为散列。
测试样本输入:
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格式是不是错了?我是不是访问了错误的密钥?有没有其他方法可以做到这一点?
谢谢你的帮助!
发布于 2013-03-08 08:45:39
"System"开头的[]表示它的值是一个哈希数组。您可以这样做:
puts "#{h['System'][0]['Provider'}"同时,"Provider"本身也是一个数组,因此您必须对其执行相同的操作,例如:
puts "#{h['System'][0]['Provider'][0]['Guid']"发布于 2013-03-08 08:44:37
看起来你只是错过了一个结束语]。散列应该嵌套到任意深度而不会出现问题。
发布于 2013-03-08 08:44:46
h['System']是一个数组。使用:
h['System'][0]['Provider']https://stackoverflow.com/questions/15284737
复制相似问题