Xml et vb.net

cs_aurel16 Messages postés 75 Date d'inscription samedi 17 septembre 2005 Statut Membre Dernière intervention 29 octobre 2010 - 15 janv. 2009 à 21:05
whitelegend Messages postés 156 Date d'inscription vendredi 13 janvier 2006 Statut Membre Dernière intervention 2 mars 2009 - 16 janv. 2009 à 08:08
Bonjour, je désirerais supprimer des éléments d'un fichier xml :

<voiture>
<name  ch="70">fiat</name>
</voiture>

J'ai trouvé ce code qui me semble clair :

<li>PublicSub deleteElement(ByVal path AsString, ByVal nom AsString)
</li><li>
</li><li>Try</li><li>'charge le fichier xml</li><li>Dim doc AsNew XmlDocument
</li><li> doc.Load(fichier)
</li><li>
</li><li>'selectionne le noeud parent de l'élément à supprimer</li><li>Dim root As XmlNode = doc.SelectSingleNode(path)
</li><li>
</li><li>'selectionne l'élément à supprimer</li><li>Dim elem As XmlElement = doc.SelectSingleNode(path & "/" & nom)
</li><li>
</li><li>'supprime l'élément</li><li> root.RemoveChild(elem)
</li><li>
</li><li>'sauvegarde</li><li> doc.Save(fichier)
</li><li>
</li><li>Catch e As Exception
</li><li> MsgBox("Erreur dans la suppression de l'élément : " & e.Message)
</li><li>EndTry</li><li>EndSub</li>Mais je ne sais pas dutout ce qu'il faut mettre dans la variable path et nom en fonction de mon fichier xml.

merci de votre aide

4 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
15 janv. 2009 à 21:11
Comme c'est clairement commenter dans le code, path est le noeud contenant l'élément à suprimer (il faut y comprendre, je pense, le noeud avec l'arborescence complete) et nom, le nom de l'élément à supprimer.

Donc dans ton exemple, ça devrait ressembler, je pense à ça :
path ="base/voiture"
nom = "name"

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0
cs_aurel16 Messages postés 75 Date d'inscription samedi 17 septembre 2005 Statut Membre Dernière intervention 29 octobre 2010
15 janv. 2009 à 21:19
Merci cela marche mais comment faire la distinction entre les différents noeuds comme par exemple :

<voiture>
<name  ch="70">fiat</name>
<name  ch="300">ferrari</name>
</voiture>


Parce que je voudrais supprimer ferrari.

merci
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
15 janv. 2009 à 22:24
Je precise que je ne maitrise pas du tout le XML mais, en galèrant pas mal, la seule méthode que j'ai trouvé est de jouer sur l'attribut ch

Dim elem As XmlElement = doc.SelectSingleNode(path & "/" & nom & "[@ch=300]")

Il faudrait pour bien faire que cet attribut soit unique, car SelectSingleNode te renvoie le premier élément trouvé correspondant

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0
whitelegend Messages postés 156 Date d'inscription vendredi 13 janvier 2006 Statut Membre Dernière intervention 2 mars 2009
16 janv. 2009 à 08:08
[../auteur/AUREL16/580665.aspx aurel16]




Je me suis mis à utiliser du XML il y a quelques jour seulement et j'ai utiliser pour ca un tuto que j'ai trouver très complet qui te permettra de résoudre ton problème.

>>>Tutorial<<<

LC
0
Rejoignez-nous