CREATION D'UN FICHIER XML EN .NET

cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 - 24 juin 2004 à 07:53
rsx602 Messages postés 140 Date d'inscription jeudi 24 août 2006 Statut Membre Dernière intervention 28 août 2014 - 17 mars 2011 à 03:15
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/23954-creation-d-un-fichier-xml-en-net

rsx602 Messages postés 140 Date d'inscription jeudi 24 août 2006 Statut Membre Dernière intervention 28 août 2014
17 mars 2011 à 03:15
Bonjours , il ya t-il un moyen d'écrire plusieur lignes dans un XML? si oui comment? Merci
CeluiQuiVComprendre Messages postés 6 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 15 juillet 2010
15 juil. 2010 à 16:45
J'ai fais un copier coller de ton code, moi je developpe en asp.net associé au vb.net et sa ne passe pas, j'ai cette erreur:

Type 'XmlElement' non défini.
Tu peux me l'expliquer (meme sur le forum)
cs_damien34 Messages postés 1 Date d'inscription dimanche 8 septembre 2002 Statut Membre Dernière intervention 10 septembre 2007
10 sept. 2007 à 09:18
Bonjour,
C'est bien de faire des codes très simples pour les débutants mais il faut préciser les versions utilisées et enlever les pièges évidents :)
Voilà une version corrigée de ton code qui va marcher tout de suite en .net version 2 (la seule à utiliser en production)
Il faut aussi ne jamais écrire n'importe où sur le disque, les nouvelles plateformes (serveur 2003, Vista) le refusent enfin par défaut (ce n'est pas trop tôt).
Cordialement
Damien

Dim Doc As New System.Xml.XmlDocument
Dim mElement As System.Xml.XmlElement
mElement = Doc.CreateElement("Root")
Doc.AppendChild(mElement)

'Create an XML declaration.
Dim xmldecl As System.Xml.XmlDeclaration
xmldecl = Doc.CreateXmlDeclaration("1.0", Nothing, Nothing)
Doc.InsertBefore(xmldecl, Doc.DocumentElement)
Dim mFichier = My.Computer.FileSystem.SpecialDirectories.MyDocuments.ToString & "\temp.xml" ' on écrit dans un dossier autorisé !
Doc.Save(mFichier)

'Temp.xml sera créé et contiendra juste le minimum pour ensuite écrire ce que l'on veut dedans

'<?xml version="1.0"?>
'<Root/>

'pour le reste il vous suffit de faire

' Dim mElement As System.Xml.XmlElement déjà déclaré
mElement = Doc.CreateElement("Enfant")
mElement.InnerText = "Noeud Enfant"
Doc.DocumentElement.AppendChild(mElement)
Doc.Save(mFichier)
cs_Guillaume1er Messages postés 8 Date d'inscription mardi 17 décembre 2002 Statut Membre Dernière intervention 3 juin 2006
8 sept. 2006 à 19:19
Merci a tous les deux vos travaux sont super et repondent a mon besoin
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
25 juin 2004 à 10:59
--> Flo1978 : j'avais vu ta source, j'ai telechargé le zip, puis fait autre chose et j'ai du l'oublier :p
J'y suis retourné, et c'est vrai que ta source fais ce que je demande.

Le principe est totalement different, tu te sers d'un xmlTextWriter, qui est peut etre une meilleure solution que la mienne.

Voici pour ceux que ca interesse la structure de la source de Flo1978

Dim XMLobj As Xml.XmlTextWriter
Dim ue As New System.[Text].UnicodeEncoding
XMLobj = New Xml.XmlTextWriter("Sample.xml", ue)

XMLobj.Formatting = Xml.Formatting.Indented
XMLobj.Indentation = 3
XMLobj.WriteStartDocument()

XMLobj.WriteComment("XML crée par Bertaux Florian")
XMLobj.WriteComment("Sample XML/XSL")
XMLobj.WriteComment("http://www.EdenSoftware.fr.st")



XMLobj.WriteStartElement("XMLXSL")

Dim des As String = "Sample XML/XSL - (http://www.EdenSoftware.fr.st)"
Dim desc As String = "Crée par Bertaux Florian "
XMLobj.WriteStartElement("DESCRIPTION")
XMLobj.WriteElementString("Info", des)
XMLobj.WriteElementString("Author", desc)
XMLobj.WriteEndElement()

XMLobj.Close()

Merci pour la note :)
FLO1978 Messages postés 18 Date d'inscription dimanche 26 octobre 2003 Statut Membre Dernière intervention 1 août 2006
25 juin 2004 à 09:01
Bonjour,


Pour repondre a ta question :
"J'ai pas trouvé sur le site comment faire pour simplement creer un fichier XML lorsque celui ci n'existe pas."

J'ai posté une source similaire a cette adresse effectuant les operations suivantes :
1 - Ecrire un fichier XML
2 - Ecrire un fichier XML et l'afficher dans un feuille de style XSL

http://www.vbfrance.com/code.aspx?ID=23489
____________________________________________________
Concernant ton code, je lui assigne la note de 9/10


Cordialement

FLO1978
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
24 juin 2004 à 10:42
Merci à vous pour vos commentaires.
C'est vrai que pour l'exemple, il y aurait beaucoup plus simple, mais comme le dit kehops, un fichier xml peut rapidement devenir complexe, il vaut donc mieux utiliser les objets fait pour :)
cs_Crazyht Messages postés 1522 Date d'inscription mardi 18 décembre 2001 Statut Membre Dernière intervention 21 août 2010 8
24 juin 2004 à 10:21
EBArtSoft je suis pas d'accord du tout, la version ecriture àen mode barbare dans un fichier convient bien si tu as une structure assez simple. De plus le nombre de modifications en cas du renommage d'un noeud son deplacement dans les niveaux de la stucture te rappel vite que les objects sont là pour simplifier la vie.

Donc autant il est vrai que pour faire les 2 noeuds de l'exemple, il est plus simple d'ecrire le tout dans un fichier 'texte', autant quand tu as de grosse structure cette solution reste un calvaire.

@+

P.S. : De plus la soucre etant pour .NET meme l'ecriture d'un fichier est uune instanciation d'objet.
cs_kehops Messages postés 25 Date d'inscription mercredi 26 mars 2003 Statut Membre Dernière intervention 20 mars 2007
24 juin 2004 à 10:19
Aujourd'hui il existe des objets spécifiques et adapté au fichier XML, pourquoi ne pas les utiliser?

La solution du fichier texte c'est une solution bricolage et sa ne tiendra jamais la route sur de gros projet avec des fichiers XML de plusieurs centaine de ligne (je sais de quoi je parle).

D'autant plus que les objets XML permettent de faire des recherches ultra rapide dans un document XML ou de se placer instantanément sur un Noeud prédéfinis par exemple.

En conclusion je dis bravo jesusonline pour ta source. Les fichiers textes c'est du passé et il faut évoluer.
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
24 juin 2004 à 07:53
Oui ou alors tu ouvre un fichier en mode texte ou binaire et tu ecris directement dedans :

open "c:\temp.tmp" for oupt as 1
print 1,"<root><enfant>nouvel enfant</enfant></root>"
close 1

On a souvent l'impression de mieu faire en utilisant des objets tout fait, c'est pas forcement le cas. Un parseur s'utilise pour lla lecture mais pour l'ecriture on peut generalement s'en passer.

@+
Rejoignez-nous