Вы бы использовали LibXML :: XML :: Parser , чтобы получить LibXML :: XML :: Document :
p = LibXML::XML::Parser.file(xml_file)
# or p = LibXML::XML::Parser.string(xml_string)
doc = p.parse
Затем используйте find
и немного XPath, чтобы найти ваши узлы:
api_key_node = doc.find('//api_key').first
Это дает вам LibXML::XML::Node
в api_key_node
, поэтому вы можете позвонить content
, чтобы получить то, что вы хотите:
api_key = api_key_node.content
# "252f5df2df522fg5fd25df2df5df2fd5"
Аналогичные вещи применимы к синхронизации, но вы используете []
для доступа к значениям атрибута:
sync = doc.find('//synchronization').first
token = sync['token']
last_sync = sync['last_syncrhonize_on']
То же самое снова для узлов <blocking>
, но вы бы перебирали их с each
вместо использования first
.