我試圖抓住在xlm中傳遞的事件日誌條目,將它們轉換爲散列,然後存儲到數據庫中。在Ruby中訪問哈希散列哈希
我正在使用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格式錯誤嗎?我正在訪問錯誤的密鑰嗎?有沒有另一種方法來做到這一點?
感謝您的幫助!
謝謝!我沒有發現事件! puts「#{h ['System'] [0] ['Provider'] [0] ['Guid']}」給我的GUID值我之後。 – Michael 2013-03-08 00:51:51