Récupération des éléments d'un fichier xml en flux retour
Récupération des éléments d'un fichier xml en flux retour - XML/XSL - Programmation
MarshPosté le 07-11-2005 à 10:43:38
Bonjour à toutes et à tous, voilà du code que j'ai éffectuer pour récupérer un flux retour lorsque j'intérroge un serveur lointain.En fait je place en paramètre le contenu d'un fichier xml(requête) <% Set Envoi = Server.CreateObject("MSXML2.ServerXMLHTTP.3.0" ) '--affectation de l'adresse à la variable BufferEnvoi="http://130.1.29.200:9008/cristalQR/ExportSmsServlet?larequete=<?xml version=""1.0"" encoding=""UTF-8"" ?><criteria><type type=""OR"" /><condition field=""message"" test=""contains"" value=""fin de service"" /><condition field=""message"" test=""contains"" value=""prise de service"" /></criteria>" Envoi.open "GET", BufferEnvoi, False Envoi.send
'--récupération du flux retour
'RecupEnvoi=Envoi.responseText
'--Récupérer noeud par noeud Set Liste_noeud=Envoi.childNodes
for i=0 to Liste_noeud.length-1 response.write Liste_noeud.item(i).value Next
Set obj_dom = Nothing Set Envoi = Nothing %> Voilà quelques explications sur la récupération du flux retour.
1)Dans le code si je met le flux dans la variable RecupEnvoi, j'ai bien des informations qui sont les éléments et attributs des différents noeuds du flux.Toutefois ces éléments sont liés et sont attachés en texte. 2)Si je récupère noeud par noeud en utilisant une boucle j'ai une erreur qui me dit que l'objet n'utilise pas cette méthode ou propriété childNodes. C'est au niveau de Liste_noeud. Je sais quand même que le flux retour est de la forme: <?xml version="1.0" encoding="iso-8859-1"?> <root> <sms> <idsms>98856327</idsms> <date>15/08/2004 14:25:55</date> <mobile>75120</mobile> <nom>Dijon</nom> <tour>22223</tour> <reply>N</reply> <text>Contenu du sms</text> </sms> <sms> <idsms>98856328</idsms> <date>28/08/2004 14:25:55</date> <mobile>87105</mobile> <nom>Marseille</nom> <tour>22223</tour> <reply>N</reply> <text>Message du sms</text> </sms> </root> J'aimerai alors faire une boucle pour récupérer tous les éléments de chaque sms.Est ce qu'on peut le faire avec cet objet issu de ServerXMLHTTP ? si oui merci de renseigner. Ou vous avez une autre methode pour récupérer tous ces éléments du flux quand j'utilise la methode GET et Send() ? Je vous remercie d'avance.
--------------- C\\'est bien d\\'aider ceux qui sont dans le besoin !
Marsh Posté le 07-11-2005 à 10:43:38
Bonjour à toutes et à tous,
voilà du code que j'ai éffectuer pour récupérer un flux retour lorsque j'intérroge un serveur lointain.En fait je place en paramètre le contenu d'un fichier xml(requête)
<%
Set Envoi = Server.CreateObject("MSXML2.ServerXMLHTTP.3.0" )
'--affectation de l'adresse à la variable
BufferEnvoi="http://130.1.29.200:9008/cristalQR/ExportSmsServlet?larequete=<?xml version=""1.0"" encoding=""UTF-8"" ?><criteria><type type=""OR"" /><condition field=""message"" test=""contains"" value=""fin de service"" /><condition field=""message"" test=""contains"" value=""prise de service"" /></criteria>"
Envoi.open "GET", BufferEnvoi, False
Envoi.send
'--récupération du flux retour
'RecupEnvoi=Envoi.responseText
'--Récupérer noeud par noeud
Set Liste_noeud=Envoi.childNodes
for i=0 to Liste_noeud.length-1
response.write Liste_noeud.item(i).value
Next
Set obj_dom = Nothing
Set Envoi = Nothing
%>
Voilà quelques explications sur la récupération du flux retour.
1)Dans le code si je met le flux dans la variable RecupEnvoi, j'ai bien des informations qui sont
les éléments et attributs des différents noeuds du flux.Toutefois ces éléments sont liés et sont attachés en texte.
2)Si je récupère noeud par noeud en utilisant une boucle j'ai une
erreur qui me dit que l'objet n'utilise pas cette méthode ou propriété childNodes. C'est au niveau de Liste_noeud.
Je sais quand même que le flux retour est de la forme:
<?xml version="1.0" encoding="iso-8859-1"?>
<root>
<sms>
<idsms>98856327</idsms>
<date>15/08/2004 14:25:55</date>
<mobile>75120</mobile>
<nom>Dijon</nom>
<tour>22223</tour>
<reply>N</reply>
<text>Contenu du sms</text>
</sms>
<sms>
<idsms>98856328</idsms>
<date>28/08/2004 14:25:55</date>
<mobile>87105</mobile>
<nom>Marseille</nom>
<tour>22223</tour>
<reply>N</reply>
<text>Message du sms</text>
</sms>
</root>
J'aimerai alors faire une boucle pour récupérer tous les éléments de chaque sms.Est ce qu'on peut le faire avec cet objet issu de ServerXMLHTTP ? si oui merci de renseigner.
Ou vous avez une autre methode pour récupérer tous ces éléments du flux quand j'utilise la methode GET et Send() ?
Je vous remercie d'avance.
---------------
C\\'est bien d\\'aider ceux qui sont dans le besoin !