Я пытаюсь получить записи журнала событий, которые передаются в xlm, преобразовать их в хэш и затем сохранить в базе данных.
В настоящее время я использую драгоценный камень XmlSimple для преобразования ввода 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? Я обращаюсь к неправильному ключу? Есть ли другой способ сделать это?
Спасибо за любую помощь!