Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

WD 8 31p - Pour les spécialistes XML

1 réponse
Avatar
Marcel.berman
Bonjour !
Dans une application, je voudrais surcharger une fonction XML ou créer une
nouvelle fonction qui me permette d'insérer et modifier sans peine des
valeurs dans un document XML..
Je voudrais que cette fonction surchargée ou non
XMLAjoute(cDocXML,cCheminComplet,cValeur)
permette d'insérer une valeur dans un document XML en lui passant sont
chemin complet,
à savoir un truc du genre "/Document/Facture#Numero=1234/Client/Numéro" pour
le chemin,
(le "#Numero=1234" permettant de déterminer la facture concernée par la
modification, par exemple )
et la valeur de la balise en question.
Cette fonction devrait créer, s'il y a lieu, toutes les balises
intermédiaire,
un peu comme ArbreAjoute() le fait pour un TreeView,
et retrouver la bonne ligne dans le document XML
Je planche lamentablement sur l'écriture de cette fonction.
Je ne parviens pas à gérer convenablement l'existence des balises
intermédiaires et la recherche de l'élément actif.
En supposant un document XML comme celui ci :
<Document>
<Facture>
<Numero>1</Numero)
<Client>
<Numero>1000</Client>
<Nom>Client 1000</Nom>
<Adresse>Rue 1000>
<Localite>1000</Localite>
</Client>
</Facture>
</Document>
Je voudais faire XMLAjoute(cDocXML,"/Document/Facture/Numero","2") et
obtenir ceci
<Document>
<Facture>
<Numero>1</Numero)
<Client>
<Numero>1000</Client>
<Nom>Client 1000</Nom>
<Adresse>Rue 1000>
<Localite>1000</Localite>
</Client>
</Facture> <Facture>
<Numero>2</Numero)
</Facture>
</Document>
Puis XMLAjoute(cDocXML,"/Document/Facture#Numero=2/Client/Numero","2000") et
avoir
<Document>
<Facture>
<Numero>1</Numero)
<Client>
<Numero>1000</Client>
<Nom>Client 1000</Nom>
<Adresse>Rue 1000>
<Localite>1000</Localite>
</Client>
</Facture>
<Facture>
<Numero>2</Numero)
<Nom>Client 1000</Nom> </Facture>
</Document>
Enfin, après avoir exécuté cela :
XMLAjoute(cDocXML,"/Document/Facture#Numero=2/Client/Nom","2000")
XMLAjoute(cDocXML,"/Document/Facture#Numero=2/Client/Adresse","2000")
XMLAjoute(cDocXML,"/Document/Facture#Numero=2/Client/Localite","2000")
...
obtenir finalement :
<Document>
<Facture>
<Numero>1</Numero)
<Client>
<Numero>1000</Client>
<Nom>Client 1000</Nom>
<Adresse>Rue 1000>
<Localite>1000</Localite>
</Client>
</Facture>
<Facture>
<Numero>2</Numero)
<Client>
<Nom>Client 2000</Nom>
<Adresse>Rue 2000>
<Localite>2000</Localite>
</Client> </Facture>
</Document>
En sachant que l'on ne remplace pas une "feuille" si elle existe déjà.
De même je voudrais pouvoir utiliser une fonction surchargée XMLModifie()
pour modifier la valeur d'une balise en lui donnant son chemin complet.
Evidemment, si quelqu'un a déjà quelque chose de similaire et de tout fait ,
je suis preneur ...
Sinon, si quelqu'un peut m'orienter, je suis preneur aussi ...
Mon problème essentiel se situe dans la détermination précise de l'endroit
où je me trouve dans le document quand il s'agit d'insérer une nouvelle
balise et
savoir si je dois utiliser XMLAjoute, XMLAjouteFils,XMLInsereElement etc ...

Pour tout dire ... après avoir un peu tout essayé sans succès, je suis tout
à fait paumé ! :o(
Bien à vous !


--
Marcel Berman
c/o Managing Business SPRL
Allée du Petit Paris, 11
B - 1410 - Waterloo
Tel : +32 2 351.60.64
Fax : +32 2 351.45.78
Gsm : +32 475.799.477

1 réponse

Avatar
Marcel.berman
Salut !
Pas de lumières sur ce problème ?
-------------------
Bonjour !
Dans une application, je voudrais surcharger une fonction XML ou créer une
nouvelle fonction qui me permette d'insérer et modifier sans peine des
valeurs dans un document XML..
Je voudrais que cette fonction surchargée ou non
XMLAjoute(cDocXML,cCheminComplet,cValeur)
permette d'insérer une valeur dans un document XML en lui passant sont
chemin complet,
à savoir un truc du genre "/Document/Facture#Numero34/Client/Numéro" pour
le chemin,
(le "#Numero34" permettant de déterminer la facture concernée par la
modification, par exemple )
et la valeur de la balise en question.
Cette fonction devrait créer, s'il y a lieu, toutes les balises
intermédiaire,
un peu comme ArbreAjoute() le fait pour un TreeView,
et retrouver la bonne ligne dans le document XML
Je planche lamentablement sur l'écriture de cette fonction.
Je ne parviens pas à gérer convenablement l'existence des balises
intermédiaires et la recherche de l'élément actif.
En supposant un document XML comme celui ci :
<Document>
<Facture>
<Numero>1</Numero)
<Client>
<Numero>1000</Client>
<Nom>Client 1000</Nom>
<Adresse>Rue 1000>
<Localite>1000</Localite>
</Client>
</Facture>
</Document>
Je voudais faire XMLAjoute(cDocXML,"/Document/Facture/Numero","2") et
obtenir ceci
<Document>
<Facture>
<Numero>1</Numero)
<Client>
<Numero>1000</Client>
<Nom>Client 1000</Nom>
<Adresse>Rue 1000>
<Localite>1000</Localite>
</Client>
</Facture> <Facture>
<Numero>2</Numero)
</Facture>
</Document>
Puis XMLAjoute(cDocXML,"/Document/Facture#Numero=2/Client/Numero","2000") et
avoir
<Document>
<Facture>
<Numero>1</Numero)
<Client>
<Numero>1000</Client>
<Nom>Client 1000</Nom>
<Adresse>Rue 1000>
<Localite>1000</Localite>
</Client>
</Facture>
<Facture>
<Numero>2</Numero)
<Nom>Client 1000</Nom> </Facture>
</Document>
Enfin, après avoir exécuté cela :
XMLAjoute(cDocXML,"/Document/Facture#Numero=2/Client/Nom","2000")
XMLAjoute(cDocXML,"/Document/Facture#Numero=2/Client/Adresse","2000")
XMLAjoute(cDocXML,"/Document/Facture#Numero=2/Client/Localite","2000")
...
obtenir finalement :
<Document>
<Facture>
<Numero>1</Numero)
<Client>
<Numero>1000</Client>
<Nom>Client 1000</Nom>
<Adresse>Rue 1000>
<Localite>1000</Localite>
</Client>
</Facture>
<Facture>
<Numero>2</Numero)
<Client>
<Nom>Client 2000</Nom>
<Adresse>Rue 2000>
<Localite>2000</Localite>
</Client> </Facture>
</Document>
En sachant que l'on ne remplace pas une "feuille" si elle existe déjà.
De même je voudrais pouvoir utiliser une fonction surchargée XMLModifie()
pour modifier la valeur d'une balise en lui donnant son chemin complet.
Evidemment, si quelqu'un a déjà quelque chose de similaire et de tout fait ,
je suis preneur ...
Sinon, si quelqu'un peut m'orienter, je suis preneur aussi ...
Mon problème essentiel se situe dans la détermination précise de l'endroit
où je me trouve dans le document quand il s'agit d'insérer une nouvelle
balise et
savoir si je dois utiliser XMLAjoute, XMLAjouteFils,XMLInsereElement etc ...

Pour tout dire ... après avoir un peu tout essayé sans succès, je suis tout
à fait paumé ! :o(
Bien à vous !


--
Marcel Berman
c/o Managing Business SPRL
Allée du Petit Paris, 11
B - 1410 - Waterloo
Tel : +32 2 351.60.64
Fax : +32 2 351.45.78
Gsm : +32 475.799.477