我正在尝试获取在 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 格式是否错误?我是否访问了错误的密钥?还有另一种方法可以做到这一点吗?
谢谢你的帮助!