List 6-42 XMLパーサーを使った文字列の分解例
  1: Dim xmldatas As String
  2: Dim objXMLdoc As MSXML.DOMDocument
  3: Dim objXMLroot As MSXML.IXMLDOMElement
  4: Dim objXMLCustomer As MSXML.IXMLDOMElement
  5: Dim objXMLChild As MSXML.IXMLDOMElement
  6: Dim msgs As String
  7:    
  8: ' GetCustomers3メソッドの呼び出し
  9: xmldatas = GetCustomers3
 10: ' XMLパーサーの実体化        
 11: Set objXMLdoc = CreateObject("Microsoft.XMLDOM")
 12: If objXMLdoc.loadXML(xmldatas) Then
 13:     ' ルートエレメントを取得
 14:     Set objXMLroot = objXMLdoc.documentElement
 15:     ' 最初の子を取得
 16:     Set objXMLCustomer = objXMLroot.firstChild
 17:     While (Not (objXMLCustomer Is Nothing))
 18:         If objXMLCustomer.nodeName = "CUSTOMER" Then
 19:             ' CUSTOMERエレメントがあった
 20:             Set objXMLChild = objXMLCustomer.firstChild
 21:             msgs = ""
 22:             While (Not (objXMLChild Is Nothing))
 23:                 If objXMLChild.nodeName = "CUSTOMERNAME" Then
 24:                     msgs = msgs & "顧客名=" & objXMLChild.firstChild.Text
 25:                 End If
 26:                 If objXMLChild.nodeName = "TELEPHONE" Then
 27:                     msgs = msgs & "電話番号=" & objXMLChild.firstChild.Text
 28:                 End If
 29:                 If objXMLChild.nodeName = "FAX" Then
 30:                     msgs = msgs & "FAX番号=" & objXMLChild.firstChild.Text
 31:                 End If
 32:                 Set objXMLChild = objXMLChild.nextSibling
 33:             Wend
 34:             MsgBox msgs
 35:          End If
 36:          ' 次の子を取得
 37:          Set objXMLCustomer = objXMLCustomer.nextSibling
 38:     Wend
 39: End If
 40:    
 41: ' オブジェクトの解放
 42: Set objXMLChild = Nothing
 43: Set objXMLCustomer = Nothing
 44: Set objXMLroot = Nothing
 45: Set objXMLdoc = Nothing