XML - VB.NET
Boulette67
Messages postés
54
Date d'inscription
Statut
Membre
Dernière intervention
-
M-crew Messages postés 403 Date d'inscription Statut Membre Dernière intervention -
M-crew Messages postés 403 Date d'inscription Statut Membre Dernière intervention -
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:
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éé :
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 :
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.
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:
- XML - VB.NET
- Xml download - Télécharger - Édition & Programmation
- Office xml handler - Télécharger - Traitement de texte
- Driveimage xml - Télécharger - Sauvegarde
- Impossible d'ouvrir le fichier office open xml - Forum Bureautique
- Txt en xml - Forum Programmation
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>
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>
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
Ce n'est pas très propre mais bon si personne ne sait
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