xlmで渡されたイベントログエントリを取得し、それらをハッシュに変換してからデータベースに保存しようとしています。
私は現在、XmlSimplegemを使用して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のフォーマットが間違っていますか?間違ったキーにアクセスしていますか?これを行う別の方法はありますか?
助けてくれてありがとう!