XML - VB.NET

Fermé
Boulette67 Messages postés 54 Date d'inscription lundi 19 février 2007 Statut Membre Dernière intervention 16 juillet 2011 - 21 nov. 2008 à 17:24
M-crew Messages postés 403 Date d'inscription samedi 18 octobre 2008 Statut Membre Dernière intervention 24 mars 2016 - 8 janv. 2010 à 23:29
Bonjour,

Je debute le VB.NET et je souhaitais apprendre l'utilisation du XML. J'ai fais quelques recherches et je suis tombé sur ce bout de code dans un cours:
'création d'une nouvelle instance du membre xmldocument
Dim XmlDoc As XmlDocument = New XmlDocument()

'création du document
XmlDoc.LoadXml("[lstSite][/ lstSite]")

Dim elemSite As XmlElement
elemSite = XmlDoc.CreateElement("SITE")
 
'creation et definition de la balise url (enfant)
Dim elemUrl As XmlElement
elemUrl = XmlDoc.CreateElement("URL")
elemUrl.InnerText = " http://www.peuw.net/index.xml "
 
'creation et definition de la balise Nom (enfant)
Dim elemNom As XmlElement
elemNom = XmlDoc.CreateElement("NOM")
elemNom.InnerText = " peuw.net "
 
'ajout des 2 balise enfants a la balise parent 
elemSite.AppendChild(elemUrl)
elemSite.AppendChild(elemNom)
 
'on ajoute la balise parent au document
XmlDoc.DocumentElement.AppendChild(elemSite)
 
'Ecriture du Xml
XmlDoc.Save(Application.StartupPath & "\Newsite.XML")
MsgBox("Enregistrement réussi")


Je me suis dis que j'allais en faire une petite fonction histoire de réutiliser ce code.
Donc dans un module j'ai créé :
Public Function EcrireXML(sDonnee1 as String, sDonnee2 as String) as Boolean
On Error GoTo err
'création d'une nouvelle instance du membre xmldocument
Dim XmlDoc As XmlDocument = New XmlDocument()

'création du document
XmlDoc.LoadXml("<lstSite></ lstSite>")

Dim elemSite As XmlElement
elemSite = XmlDoc.CreateElement("SITE")
 
'creation et definition de la balise url (enfant)
Dim elemUrl As XmlElement
elemUrl = XmlDoc.CreateElement("URL")
elemUrl.InnerText = sDonnee1
 
'creation et definition de la balise Nom (enfant)
Dim elemNom As XmlElement
elemNom = XmlDoc.CreateElement("NOM")
elemNom.InnerText = sDonnee2
 
'ajout des 2 balise enfants a la balise parent 
elemSite.AppendChild(elemUrl)
elemSite.AppendChild(elemNom)
 
'on ajoute la balise parent au document
XmlDoc.DocumentElement.AppendChild(elemSite)
 
'Ecriture du Xml
XmlDoc.Save(Application.StartupPath & "\Newsite.XML")
MsgBox("Enregistrement réussi")


EcrireXML= True
Exit Function
err:
EcrireXML= False
End Function



Jusque là je ne pense pas avoir de probleme dans ma fonction. Ha si j'ai modifié un truc car dans le cours j'avais "XmlDoc.LoadXml("[lstSite][/ lstSite]")" mais j'avais une belle erreur et quand j'ai mis <> à la place des crochets plus d'erreur.

Le hic c'est que dans ce cours il y a l'arborescence du fichier "Newsite.xml" et devinez quoi? Ben j'ai pas le resultat attendu.
Au lieu d'avoir :
<lstSite>  
      <SITE> 
            <URL>http://www.peuw.net/index.xml</URL> 
            <NOM>peuw.net</NOM> 
      </SITE> 
      <SITE> 
            <URL>http://www.poxx.net/index.xml</URL> 
            <NOM>poxx - Science Fair</NOM> 
      </SITE>
</lstSite>

Qui est un exemple, j'ai que la derniere ligne. Conclusion la fonction n'ajoute pas mais remplace les données a cause du "XmlDoc.CreateElement".
Alors dans mon esprit il suffisait de chercher dans les propriétés de "XmlDoc" et de trouver un truc avec Add.
Alors je doit etre miro peu etre mais j'ai rien trouvé. SNIFFFF!!!!


Merci d'avance si vous avez une solution.
A voir également:

4 réponses

'création d'une nouvelle instance du membre xmldocument
Dim XmlDoc As XmlDocument = New XmlDocument()

'création du document
XmlDoc.LoadXml("<lstSite></lstSite>")

Dim elemSite As XmlElement
elemSite = XmlDoc.CreateElement("SITE")

'creation et definition de la balise url (enfant)
Dim elemUrl As XmlElement
elemUrl = XmlDoc.CreateElement("URL")
elemUrl.InnerText = " http://www.peuw.net/index.xml "

'creation et definition de la balise Nom (enfant)
Dim elemNom As XmlElement
elemNom = XmlDoc.CreateElement("NOM")
elemNom.InnerText = " peuw.net "

'ajout des 2 balise enfants a la balise parent
elemSite.AppendChild(elemUrl)
elemSite.AppendChild(elemNom)

'on ajoute la balise parent au document
XmlDoc.DocumentElement.AppendChild(elemSite)

'*****2 elt site

elemSite = XmlDoc.CreateElement("SITE")

elemUrl = XmlDoc.CreateElement("URL")
elemUrl.InnerText = " http://www.hosni.net/index.xml "

'creation et definition de la balise Nom (enfant)

elemNom = XmlDoc.CreateElement("NOM")
elemNom.InnerText = " hosni "

'ajout des 2 balise enfants a la balise parent
elemSite.AppendChild(elemUrl)
elemSite.AppendChild(elemNom)

'on ajoute la balise parent au document
XmlDoc.DocumentElement.AppendChild(elemSite)
'*****fin elt site

'Ecriture du Xml
XmlDoc.Save(Report_Path & "Site.xml")
MsgBox("Enregistrement réussi")

ca donne comme résultat
<lstSite>
<SITE>
<URL> http://www.peuw.net/index.xml </URL>
<NOM> peuw.net </NOM>
</SITE>
<SITE>
<URL> http://www.hosni.net/index.xml </URL>
<NOM> hosni </NOM>
</SITE>
</lstSite>
1
Boulette67 Messages postés 54 Date d'inscription lundi 19 février 2007 Statut Membre Dernière intervention 16 juillet 2011 6
24 nov. 2008 à 10:21
Merci pour ce bout de code qui fonctionne parfaitement.

Ce que j'aurai voulu faire c'est plutôt une fonction qui me permette d'ajouter un nouveau site dans un fichier deja existant.

Fichier déjà créer :

<lstSite>
<SITE>
<URL> http://www.peuw.net/index.xml </URL>
<NOM> peuw.net </NOM>
</SITE>
<SITE>
<URL> http://www.hosni.net/index.xml </URL>
<NOM> hosni </NOM>
</SITE>
</lstSite>

Ajout d'un nouveau site :

<lstSite>
<SITE>
<URL> http://www.peuw.net/index.xml </URL>
<NOM> peuw.net </NOM>
</SITE>
<SITE>
<URL> http://www.hosni.net/index.xml </URL>
<NOM> hosni </NOM>
</SITE>
<SITE>
<URL> https://forums.commentcamarche.net/forum/ </URL>
<NOM> commentcamarche.net </NOM>
</SITE>
</lstSite>

Est ce qu'il faut charger tout le contenu du fichier puis le re-créer en ajoutant le nouveau site? Si c'est le cas est ce que tu connais le mot du code qui fait ca. Si oui si tu peux le donner je chercherai comment l'utiliser.

Merci d'avance
0
Boulette67 Messages postés 54 Date d'inscription lundi 19 février 2007 Statut Membre Dernière intervention 16 juillet 2011 6
22 nov. 2008 à 15:50
Personne ne programme en VB.NET?
0
Boulette67 Messages postés 54 Date d'inscription lundi 19 février 2007 Statut Membre Dernière intervention 16 juillet 2011 6
25 nov. 2008 à 10:24
Je crois que je vais être de faire comme si s'était un vulgaire fichier texte faire un recherche de ma dernière ligne "</lstSite>" et d'insérer ma nouvelle saisie.

Ce n'est pas très propre mais bon si personne ne sait
0
Boulette67 Messages postés 54 Date d'inscription lundi 19 février 2007 Statut Membre Dernière intervention 16 juillet 2011 6
26 nov. 2008 à 10:22
Personne ne connait une fonction pour ajouter des éléments dans un fichier XML ayant déjà des balises.
0
M-crew Messages postés 403 Date d'inscription samedi 18 octobre 2008 Statut Membre Dernière intervention 24 mars 2016 5
8 janv. 2010 à 23:29
Moi aussi J'ai Le Meme Problém
0