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