通过迭代从XML中提取数据

时间:2014-11-28 12:50:46

标签: xml vba access-vba

我有一个XML字符串,其中包含我需要写入日志表的数据。

XML看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<response success="true">
  <messages>
    <message key="warning-unmapped-item">Message 1</message>
    <message key="warning-unmapped-org">Message 2</message>
  </messages>

我需要&#34;响应成功&#34;标记和每个消息键/文本

我已经能够将XML加载到dom并获取一些数据,但不是全部。 :

Dim Variables As IXMLDOMNodeList
Dim variable As IXMLDOMNode
Dim log As MSXML2.DOMDocument

Set log = New MSXML2.DOMDocument
log.loadXML (message)

Set Variables = log.selectNodes("//messages")
For Each variable In Variables
    Debug.Print variable.selectNodes("message").Item(0).Text
    Debug.Print variable.selectNodes("message").Item(1).Text
Next

我可以使用上面的语法获得前两个消息,但我宁愿遍历消息而不是直接引用它们,因为我不知道会有多少消息。此外,我需要键和文本。有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

你已经非常接近,只需要添加几个。

  1. 要获取所有消息元素,请直接使用 selectNodes(“// messages”)或/ messages / message
  2. 按如下方式迭代结果
  3. 使用ndMessage(i).getAttribute(key)获取密钥属性。

    strXPath =“// messages / message”     设置ndMessages = xmlRates.selectNodes(strXPath)

    For i = 0 To ndMessages.Length - 1
      Debug.Print ndMessages(i).Text & " key:" & ndMessages(i).getAttribute( "key" )
    Next i