我有点坚持以下几点:我尝试使用 VBA 将货币汇率从本地银行网站获取到 Excel - 主要用于 XML 解析练习,我想说这是我的第一次认真尝试。
经过几个小时的谷歌搜索和阅读相关的 SO 问题后,我得到了或多或少可行的解决方案,但我想对其进行优化以更好地理解 XML。到目前为止一切顺利,问题是:
<LIST_RATE>
<RATE ISO="EUR" Code="978">
<TITLE>Евро</TITLE>
<CODE>978</CODE>
<ISO>EUR</ISO>
<DATE>Thu, 31 Jan 2013 09:00:00 GMT</DATE>
<BUY>11550.0000</BUY>
<SELL>11820.0000</SELL>
<QUANTITY>1</QUANTITY>
</RATE>
<RATE ISO="RUB" Code="643">
<TITLE>Российский рубль</TITLE>
<CODE>643</CODE>
<ISO>RUB</ISO>
<DATE>Thu, 31 Jan 2013 09:00:00 GMT</DATE>
<BUY>279.0000</BUY>
<SELL>292.0000</SELL>
<QUANTITY>1</QUANTITY>
</RATE>
<RATE ISO="USD" Code="840">
<TITLE>Доллар США</TITLE>
<CODE>840</CODE>
<ISO>USD</ISO>
<DATE>Thu, 31 Jan 2013 09:00:00 GMT</DATE>
<BUY>8570.0000</BUY>
<SELL>8710.0000</SELL>
<QUANTITY>1</QUANTITY>
</RATE>
</LIST_RATE>
对于上面的 XML 部分(以防万一 - 这是完整 XML 的链接:http: //www.priorbank.by/CurratesExportXml.axd? channel=9)我正在使用以下代码遍历RATE
节点的子节点:LIST_RATE
For Each RATE_Node In LIST_RATE_Node.ChildNodes
CurrencyCode = RATE_Node.ChildNodes.Item(2).Text 'ISO node
RateValue = CSng(Replace(RATE_Node.ChildNodes.Item(4).Text, ".", ",")) 'BUY node
[rest of code]
Next
代码工作正常,但我想以RATE
某种方式使用它们的名称而不是Item(#)
. 我试过selectSingleNode
了,但我一点也不熟悉 XPath,而且我使用的符号总是返回第一个<RATE ISO="EUR" Code="978">
值。getElementsByTagName
返回整个节点,依此类推。
我阅读了很多相关的 SO 问题,但仍然卡住了。我很确定解决方案很简单——我只需要让所有的收支平衡。任何有关正确方向的建议或指导都将受到高度赞赏。提前致谢!