TheDadar | Bonjour à tous.
Après plusieurs jours d'essais infructueux je me tourne vers vous pour mon problème :
Je dois interagir avec un webservice SOAP (wsdl).
J'ai réussi à envoyer ma requête et récupérer le XML qui va bien.
Cependant impossible de le parser correctement, ou en tout cas de récupérer une donnée dans une string.
Pour me connecter j'utilise ce code (qui fonctionne) :
Code :
- Dim oXmlHTTP, SOAPRequest, myXML
- Set oXmlHTTP = CreateObject("Microsoft.XMLHTTP" )
- Set myXML =Server.CreateObject("Microsoft.XMLDOM" )
- myXML.Async=False
- oXmlHTTP.Open "GET", "http://intraweb.xxxxx.com/ReferentialDataWS_v4.0/services/SecureAxisWrapperRefDataPersonGroupService", False, _
- "XXXXX", "XXXXX"
- oXmlHTTP.setRequestHeader "Content-Type", "application/soap+xml; charset=utf-8"
- oXmlHTTP.setRequestHeader "SOAPAction", "http://intraweb.xxxx.com/ReferentialDataWS_v4.0/services/SecureAxisWrapperRefDataPersonGroupService"
- SOAPRequest = _
- "<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:all=""http://all.service.XXXXX.com"">" &_
- "<soapenv:Header/>" &_
- " <soapenv:Body>"&_
- " <all:getPersonBySgid>"&_
- " <all:sgid>XXXXXXX</all:sgid>"&_
- " </all:getPersonBySgid>"&_
- "</soapenv:Body>"&_
- "</soapenv:Envelope>"
-
- oXmlHTTP.send SOAPRequest
- Response.Write "<xmp>"
- Response.Write oXmlHTTP.responseXML.xml
- myXML = oXmlHTTP.responseXML.xml
- Response.Write "</xmp>"
|
Ici je dois mettre les balises <xmp> sinon la sortie ne me donne que les données concaténées, sans les balises XML.
Voici ce qui ressort, une fois mis en forme (raccourci) :
Code :
- <?xml version="1.0" encoding="utf-8"?>
- <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <soapenv:Body>
- <getPersonBySgidResponse xmlns="http://all.service.xxxxx.com">
- <getPersonBySgidReturn>
- <alternateContactSgi xsi:nil="true"/>
- <birthDate>1986-11-14T22:00:00.327Z</birthDate>
- <birthDateOkay>true</birthDateOkay>
- <branchId>B78</branchId>
- <businessGroupId>R78E</businessGroupId>
- <contractEndDate xsi:nil="true"/>
- <contractStartDate>2013-09-16T22:00:00.327Z</contractStartDate>
- <contractorCompanyName xsi:nil="true"/>
- <countryId>FRA</countryId>
- <delegationId>DLFRA</delegationId>
- <departmentName>xxx</departmentName>
- <departmentNumber>XXXXX</departmentNumber>
- <detailed>true</detailed>
- <divisionName>XXXXO - SIEGE SOCIAL</divisionName>
- <divisionNumber>31346</divisionNumber>
- <educationCompound xsi:nil="true"/>
- <employeePosition>N</employeePosition>
- <employeePositionLocal xsi:nil="true"/>
- <faxNumber xsi:nil="true"/>
- <filiereId>ADM</filiereId>
- <firstname>Lakhdar</firstname>
- <firstnameEncoded xsi:nil="true"/>
- <firstnamePreferred xsi:nil="true"/>
- <fullName>Lakhdar XXXX</fullName>
- <inChargeSgiJuridic xsi:nil="true"/>
- <inChargeSgiMission xsi:nil="true"/>
- </getPersonBySgidReturn>
- </getPersonBySgidResponse>
- </soapenv:Body>
- </soapenv:Envelope>
|
Donc tout semble normal (n'est-ce pas ? Peut être déjà une erreur ici ? )
Voici le code que j'utilise pour tenter de parser le XML :
Code :
- Dim objXML,objRoot ,I, thisNode,strID, strNarrative, thisChild, selectedNode,testStr
- Set objXML= Server.CreateObject("MSXML2.DOMDocument" )
- objXML.async = False
- objXML.setProperty "SelectionLanguage", "XPath"
- objXML.setProperty "SelectionNamespaces", "xmlns='http://all.service.xxxxx.com' " & _
- "xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' " & _
- "xmlns:xsd='http://www.w3.org/2001/XMLSchema' " & _
- "xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' "
- objXML.loadXML(myXML)
- Set selectedNode= objXML.selectSingleNode("//soapenv:Envelope/soapenv:Body/getPersonBySgidResponse/getPersonBySgidReturn/getPersonBySgidReturn/divisionName" )
- Set objRoot = objXML.documentElement
- Response.Write "<br/> myXml == " & myXML
- Response.Write "<br/> objXML == " & objXML.Text
- Response.Write "<br/> objRoot == " & objRoot.Text
- Response.Write "<br/> selectedNode == " & selectedNode.Text
|
Et là dans une page qui relève les erreurs j'ai un joli : "line 68 : Object required " (ligne qui correspond ici à la dernière ligne)...
J'ai tenté plusieurs méthodes pour le "selectedNode" en argument (juste le nom de l'attribut final, le chemin pas entier etc...) sans succès.
Peut être quelqu'un ici verra (enfin) ce qui cloche ?
Merci de m'avoir lu |