我正在尝试使用 libxml-ruby 以以下格式(来自欧洲中央银行数据源)解析 XML:
<?xml version="1.0" encoding="UTF-8"?>
<gesmes:Envelope xmlns:gesmes="http://www.gesmes.org/xml/2002-08-01"
xmlns="http://www.ecb.int/vocabulary/2002-08-01/eurofxref">
<gesmes:subject>Reference rates</gesmes:subject>
<gesmes:Sender>
<gesmes:name>European Central Bank</gesmes:name>
</gesmes:Sender>
<Cube>
<Cube time="2009-11-03">
<Cube currency="USD" rate="1.4658"/>
<Cube currency="JPY" rate="132.25"/>
<Cube currency="BGN" rate="1.9558"/>
</Cube>
</Cube>
</gesmes:Envelope>
我正在按如下方式加载文档:
require 'rubygems'
require 'xml/libxml'
doc = XML::Document.file('eurofxref-hist.xml')
但我正在努力提出正确的命名空间配置以允许对数据进行 XPATH 查询。
我可以Cube
使用以下代码提取所有节点:
doc.find("//*[local-name()='Cube']")
但是考虑到父节点和子节点都被称为Cube
这真的无助于我只迭代父节点。也许我可以修改这个 XPATH 以只找到那些带有time
参数的节点?
我的目标是能够提取所有Cube
具有time
属性(即)的节点,这样我就可以提取日期并迭代子节点<Cube time="2009-11-03">
中的汇率。Cube
任何人都可以帮忙吗?