Posez votre question Signaler

XML - VB.NET

Boulette67 58Messages postés 19 février 2007Date d'inscription 16 juillet 2011Dernière intervention - Dernière réponse le 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.
Lire la suite 

XML - VB.NET »

6 réponses
Réponse
+0
moins plus
Personne ne programme en VB.NET?
Ajouter un commentaire
Réponse
+0
moins plus
'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>
Boulette67 - 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> http://www.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
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
Personne ne connait une fonction pour ajouter des éléments dans un fichier XML ayant déjà des balises.
M-crew - 8 janv. 2010 à 23:29
Moi aussi J'ai Le Meme Problém
Ajouter un commentaire
Ce document intitulé « XML - VB.NET » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
5 extensions si vous voulez revenir à l'ancien Facebook