From: Ricaud Matthieu (matthieu.ricaud@cned.fr)
Date: 24/05/2004 - 08:36
Salut !
Qu'est cde qui ne marche pas dans ton code au juste ?
Je ne l'ai pas testé, mais il y a une ligne qui me parait pas top :
Set objlivreXML2 = objRoot.selectSingleNode("livres/livre["&i&"]")
c'est plutôt ("livres/livre[@num="&i&"]") non ?
Ta variable ne selectionne rien sinon.
Sinon dans la démarche, plutôt que de faire childnodes.length, tu peux
utiliser le principe suivant :
Tu selectionne tous les noeuds LIVRE d'un coup avec :
Set objTOUSlivreXML2 = objRoot.selectNodes("livres/livre")
Et ensuite tu peux boucler dessus en faisaint
Dim objLIVRE
For each objLIVRE in objTOUSlivreXML2
'----là tu fais ce que tu veux par exemple : response.write
objlIVRE.getattribute("num")&"<br/>"
'---- mettre dans un tableau etc...
Next
Voila je te laisse tester,
a+
-----Message d'origine-----
De : xml-tech-bounce@xmlfr.org [mailto:xml-tech-bounce@xmlfr.org]De la
part de Lara Callaway
Envoyé : vendredi 21 mai 2004 16:12
À : xml-tech@xmlfr.org
Objet : [xml-tech] Re: Extraction et insertion dedonnées XML
Merci pour tes précieux conseils ! Ca fonctionne impec' maintenant :-) Si je
peux me permettre j'ai encore une question :
Voilà mon fichier XML
<LIVRES>
<LIVRES num='1'>l1</LIVRE>
<LIVRES num='2'>l2</LIVRE>
<LIVRES num='3'>l3</LIVRE>
<LIVRES num='4'>l4</LIVRE>
<LIVRES num='5'>l5</LIVRE>
</LIVRES>
Je souhaite récupérer dans un tableau tous les "num".
Donc je voudrais en résultat:
tablivre(1)=1
tablivre(2)=2
tablivre(3)=3
tablivre(4)=4
tablivre(5)=5
Voici la fonction que j'appelle
***********************************************
function nb (XMLFile)
Dim objXML
Dim objRoot
dim nb
Set objXML = server.CreateObject("Microsoft.XMLDOM")
if objXML.load (Server.MapPath(XMLFile)) then
Set objRoot = objXML.documentElement
else
set objXML= Nothing
response.write("erreur")
response.end
end if
'Caclule Le nombre de livres
Set objlivreXML = objRoot.selectSingleNode("livres")
nb = objlivreXML.childnodes.length
'Tableau qui contiendra tous les "num" des livres
dim tablivre() : redim tablivre(nb)
'C'est ici mon problème....
??????????????
for i = 1 to nb
Set objlivreXML2 = objRoot.selectSingleNode("livres/livre["&i&"]")
tablivre(i) = objlivreXML2.getattribute("num")
next
??????????????
end function
***********************************************
La partie entourée de ??? me pose problème. Je mélange tout. Si vous avez
pour
piste m'éclairer les idées...
A+, Lara
Selon Ricaud Matthieu <matthieu.ricaud@cned.fr>:
>
> Ok je comprend mieux le principe de remplacer des données d'un fichiers
xml
> par celles d'un autre...
> Gestion de planning... c moins drôle qu'un biblio :0)
> Sinon ton pb est juste un pb de vb, il faut bien faire la différence entre
> une chaine de caractère et une variable.
> Puiisque tu me poses la question je vais me permettre de reprendre un peu
> tout à zéro même si tu sais déjà tout ça j'imagine mais qu'il reste un peu
> de confusion ...
> qd tu écris selectSingleNode(qqchose)
> qqchose est une chaine de caractère qui peut être éventuellement
"calculée"
> par concaténation de plusieurs choses :
>
> ex : "a"&"b" va donner la chaine "ab"
> si strVar est un variable de type chaine de caractère qui contient chaine
> "a" alors strVar&"b" donnera "ab"
>
> Bref, c'est le même principe pour le numero de ton livre qui est une
> variable
> Le but c'est d'obtenir la chaine "livres/livre[@num='1']" sauf que le 1
> vient d'une variable monLivre :
>
> "livres/livre[@num=" & monLivre & "]" va bien donner
> "livres/livre[@num='1']" si monLivre='1'
> (monLivre = "1" ou '1', c'est la même chose, on avait écrit '1' dans le
> selectSingleNode() pour distinguer des "")
>
> Bref voici ta ligne :
>
> Set
> objLIVRE1XML1=objRoot1.selectSingleNode("LIVRES/LIVRE[@num="&monLivre&"]")
>
> Je n'allais pas de la donner de suite qd même, ce serait macher ton
> travail...
> de la rigueur hein !
>
> bonne soirée,
> Matthieu
--
Devenez redacteur <XML>fr et contribuez au developpement du
xml francophone (http://xmlfr.org/infos/redacteurs/) !
Liste de diffusion "xml-tech@xmlfr.org" (http://xmlfr.org).
Cette liste est a votre disposition pour discuter en francais de
tout sujet technique lie a XML.
Pour resilier votre abonnement, envoyez un message contenant
la commande "unsubscribe" a xml-tech-request@xmlfr.org
(mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
--
Devenez redacteur <XML>fr et contribuez au developpement du
xml francophone (http://xmlfr.org/infos/redacteurs/) !
Liste de diffusion "xml-tech@xmlfr.org" (http://xmlfr.org).
Cette liste est a votre disposition pour discuter en francais de
tout sujet technique lie a XML.
Pour resilier votre abonnement, envoyez un message contenant
la commande "unsubscribe" a xml-tech-request@xmlfr.org
(mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
Archive générée par hypermail 2.1.3 le 28/06/2004 - 11:06 UTC
webmaster@xmlfr.org
|