|
* 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.
- 엑셀 버전(95,97,2000,xp,2003,2007):
* 아래줄에 질문을 작성하세요 >> 2013
웹서비스 호출하여서 xml 형태로 가져오기까지 했는데 간단하게 parsing할 방법이 없을까요..?? 소스는 이렇습니다.
Public Sub TestResultsXml()
Dim sEnv As String
Dim xmlhtp As New XMLHTTP60
Dim xmlDoc As New DOMDocument60
Dim Node As IXMLDOMNode
Dim childNode As IXMLDOMNode
Dim NodeList As IXMLDOMNodeList
Dim Ans1 As String
Dim Ans2 As String
Dim attr As IXMLDOMAttribute
sEnv = "<?xml version=""1.0"" encoding=""utf-8""?>" _
& "<soap:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""" _
& " xmlns:xsd=""http://www.w3.org/2001/XMLSchema""" _
& " xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"">" _
& "<soap:Body><GetCustinfoStringXML xmlns=""http://tempuri.org/"" />" _
& "</soap:Body></soap:Envelope>"
With xmlhtp
.Open "post", "http://localhost:59404/WebService1.asmx?op=GetCustinfoStringXML", False
.SetRequestHeader "Host", "http://localhost:59404/WebService1.asmx"
.SetRequestHeader "Content-Type", "text/xml; charset=utf-8"
.SetRequestHeader "SoapAction", "http://tempuri.org/GetCustinfoStringXML"
.SetRequestHeader "Accept-encoding", "zip"
.send (sEnv)
xmlDoc.LoadXML .responseText
End With
Set NodeList = xmlDoc.ChildNodes(1).ChildNodes(0).ChildNodes(0).ChildNodes(0).ChildNodes
'Debug.Print "" & NodeList(0).nodeTypedValue
'Debug.Print "NodeList = " & NodeList(1).nodeTypedValue
Ans1 = NodeList(0).nodeTypedValue
Debug.Print "" & Ans1; ""
' 이방법 말고 다른 방법을 찾거나.. FOR문 돌려서 SHEET에 뿌리지게끔 수정해야 할듯..
Worksheets("Sheet1").Select
Range("A2").Value = Split(Split(Ans1, "<ROW_ID>")(1), "</ROW_ID>")(0)
Range("B2").Value = Split(Split(Ans1, "<CUST_NM>")(1), "</CUST_NM>")(0)
Range("C2").Value = Split(Split(Ans1, "<IDENTITY_NO>")(1), "</IDENTITY_NO>")(0)
Range("D2").Value = Split(Split(Ans1, "<TEL>")(1), "</TEL>")(0)
End Sub
아래 split을 써서 나오게는 테스트 해봤는데 여러개의 데이터를 뿌려야 하는데.. 뭔가 더 쉽고 간단한 방법이 없을지 여쭤봅니다. |
|