Insertion d'un noeud en premiere position d'une liste d'enfants

cs_Cako19 Messages postés 56 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 5 décembre 2005 - 23 sept. 2004 à 17:39
cs_Cako19 Messages postés 56 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 5 décembre 2005 - 5 oct. 2004 à 13:31
Bonjour,

J'utilise Visual C++ et MSXML4.0.
Je souhaiterais insérer un noeud auparavant cloné au début d'une liste d'enfants et non à la fin comme avec la méthode appendChild.
Comme la méthode put_firstChild n'existe pas, je suppose qu'il faut utiliser la méthode insertBefore( IXMLDOMNode* newChild, VARIANT refChild, IXMLDOMNode** outChild ).

J'arrive à récupérer l'actuel premier noeud sous forme de IXMLDOMNode mais je ne vois pas comment le transformer en VARIANT. De ce fait, je n'arrive pas à utiliser la méthode insertBefore(), et tous les exemples que je trouve n'utilisent pas C++ ou n'utilisent pas la méthode avec les mêmes paramètres etc.

Comment dois-je faire ?

Merci d'avance pour votre aide

Cako19

1 réponse

cs_Cako19 Messages postés 56 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 5 décembre 2005
5 oct. 2004 à 13:31
Bonjour,

Des fois que ça intéresse qqun, voici la réponse à mon problème.
C'est pas compliqué mais bonjour la galère pour trouver !!

VARIANT vReference;
IXMLDOMNodePtr pNodeSequence=NULL; // Noeud avant lequel on veut insérer notre noeud avec insertBefore
IXMLDOMNodePtr pNodeCloned=NULL; // Noeud à insérer avec insertBefore
IXMLDOMNodePtr pNodeRecup=NULL; // Noeud résultat

...
// Recuperation de pNodeSequence dans l'arborescence du XML grâce à un chemin
...
// Clonage ou autre du noeud que l'on souhaite insérer
...

VariantInit(&vReference);
vReference.vt=VT_DISPATCH;
vReference.pdispVal=pNodeSequence;

hr=pNodeSequences->insertBefore(pNodeCloned, vReference, &pNodeRecup);

Et là, ça marche !

à+

Cako19
0
Rejoignez-nous