通过迭代从XML中提取数据

通过迭代从XML中提取数据,xml,ms-access,vba,Xml,Ms 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">

我有一个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>

我可以使用上面的语法获得前两条消息,但我更愿意遍历这些消息,而不是直接引用它们,因为我不知道会有多少条消息。还有,我需要钥匙和文字。有更好的方法吗?

您已经非常接近了,只需添加几点

  • 要获取所有消息元素,请使用直接选择它们 选择节点(“//消息”)或/messages/message
  • 迭代结果如下
  • 使用ndMessage(i).getAttribute(key)获取key属性

    strXPath=“//消息/消息” 设置ndMessages=xmlRates.selectNodes(strXPath)

  • 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
    
    For i = 0 To ndMessages.Length - 1
      Debug.Print ndMessages(i).Text & " key:" & ndMessages(i).getAttribute( "key" )
    Next i