我不知道这正好什么名字由那是我的搜索复杂。
我的数据文件OX.session.xml是(旧?)形式
<?xml version="1.0" encoding="utf-8"?>
<CAppLogin xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://oxbranch.optionsxpress.com">
<SessionID>FE5E27A056944FBFBEF047F2B99E0BF6</SessionID>
<AccountNum>8228-5500</AccountNum>
<AccountID>967454</AccountID>
</CAppLogin>
究竟是什么被称为是XML数据格式?
不管怎样,我要的是在我的Ruby代码一个哈希像这样结束了:
CAppLogin = { :SessionID => "FE5E27A056944FBFBEF047F2B99E0BF6", :AccountNum => "8228-5500", etc. } # Doesn't have to be called CAppLogin as in the file, may be fixed
什么可能是最短的,最内置Ruby的方式来自动哈希读,在某种程度上我可以更新的SessionID值并将其存储容易恢复成用于后面的程序运行的文件?
我打得四处YAML,REXML但宁愿没有打印我的(坏的)例子试验。
还有,你可以在Ruby中使用做这几个库。
红宝石工具箱有他们几个的一些很好的覆盖面:
https://www.ruby-toolbox.com/categories/xml_mapping
我用XMLSimple,只需要创业板,然后使用xml_in在XML文件中加载:
require 'xmlsimple'
hash = XmlSimple.xml_in('session.xml')
如果您在Rails环境的时候,你可以只使用Active支持:
require 'active_support'
session = Hash.from_xml('session.xml')
使用引入nokogiri解析与命名空间的XML:
require 'nokogiri'
dom = Nokogiri::XML(File.read('OX.session.xml'))
node = dom.xpath('ox:CAppLogin',
'ox' => "http://oxbranch.optionsxpress.com").first
hash = node.element_children.each_with_object(Hash.new) do |e, h|
h[e.name.to_sym] = e.content
end
puts hash.inspect
# {:SessionID=>"FE5E27A056944FBFBEF047F2B99E0BF6",
# :AccountNum=>"8228-5500", :AccountID=>"967454"}
如果您知道 CAppLogin是根元素,可以简化一下:
require 'nokogiri'
dom = Nokogiri::XML(File.read('OX.session.xml'))
hash = dom.root.element_children.each_with_object(Hash.new) do |e, h|
h[e.name.to_sym] = e.content
end
puts hash.inspect
# {:SessionID=>"FE5E27A056944FBFBEF047F2B99E0BF6",
# :AccountNum=>"8228-5500", :AccountID=>"967454"}