IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Créer un fichier XML et écrire dedans [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    316
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 316
    Par défaut Créer un fichier XML et écrire dedans
    Bonjour,

    Est-ce qu'il y a une autre manière de le faire comme je fais ci-dessous ?
    Est-ce qu'il y a une meilleure façon de le faire que mon code ci-dessous ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      using (System.IO.StreamWriter SW = new System.IO.StreamWriter(Server.MapPath("monRep/fichierTrater_" + strDate + ".xml")))
                        {
     
                            SW.WriteLine("<?xml-stylesheet type='text/xsl' href='notreDasta.xslt'?><dataconfirme><date>" + DateTime.Now.ToString("yyyy'/'MM'/'dd") + "</date><nom>" + z.nom + "</nom><prenom>" + z.prenom + "</prenom><adresse>" + z.Addresse1 + z.Addresse2 + "," + z.Ville + ","  + z.pays + "," + z.codePostal +"</adresse><articles><article><nom_article>" + y.article1Nom + "</nom_article></article><article><nom_article>" + y.article2Nom + "</nom_article></article></articles></dataconfirme>");
     
                            SW.Close();
                        }
    Avec ma façon, j'ai obtient quelque chose comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?xml-stylesheet type='text/xsl' href='notreDasta.xslt'?><dataconfirme><date>2014/04/01</date><nom>toto</nom><prenom>tata</prenom><adresse>1 RUE ST DENIS,TORONTO,CANADA,I3K 4t5</adresse><articles><article><nom_article>Mono</nom_article></article><article><nom_article>Soso</nom_article></article></articles></dataconfirme>
    Comemnt peux-je obtenir avec les indentations comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?xml-stylesheet type='text/xsl' href='notreDasta.xslt'?>
    <dataconfirme>
    	<date>2014/04/01</date>
    	<nom>toto</nom>
    	<prenom>tata</prenom>
    	<adresse>1 RUE ST DENIS,TORONTO,CANADA,I3K 4t5</adresse>
    		<articles>
    			<article>
    				<nom_article>Mono</nom_article>
    			</article>
    			<article>
    				<nom_article>Soso</nom_article>
    			</article>
    		</articles>
    </dataconfirme>
    Merci

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2008
    Messages : 381
    Par défaut
    Il y a des objets natif en .Net pour gérer le xml, tel que XmlWriter

    Exemple rapide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    using System.Xml;
     
    XmlWriterSettings settings = new XmlWriterSettings();
    settings.Indent = true;
     
    using (XmlWriter writer = XmlWriter.Create(Server.MapPath("monRep/fichierTrater_" + strDate + ".xml", settings))
    {
    	writer.WriteStartDocument();
    	writer.WriteComment("This file is generated by me!");
    	writer.WriteComment(String.Format("generated-on=\"{0}\"", DateTime.Now));
    	writer.WriteStartElement("dataconfirme");
     
    	writer.WriteElementString("date", DateTime.Now.ToString("yyyy'/'MM'/'dd"));
    	writer.WriteElementString("nom", z.nom);
    	writer.WriteElementString("prenom", z.prenom);
     
    	writer.WriteEndElement();
    	writer.WriteEndDocument();
    	writer.Flush();
    }

  3. #3
    Membre éclairé Avatar de SetaSensei
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 78
    Par défaut
    J'aurai même tendance à encourager l'utilisation de XDocument couplé au fonctionnement de XmlSerializer pour des raisons de maintenance et de lisibilité.

    Réécrit de tête (il y a sûrement des erreurs de syntaxe et de type) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    [XmlRoot("dataconfirme")]
    public class Confirmation
    {
    	[XmlElement("date")]
    	public string DateConfirmation 
    	{ 
    		get { return DateTime.Now.ToShortDateString(); }
    		set { }
    	}
     
    	// ...
     
    	[XmlArray("articles"),XmlArrayItem("article")]
    	public List<Article> Articles { get; set; }
     
    }
     
    // ...
     
    [Serializable]
    public class Article
    {
    	[XmlElement("nom_article")]
    	public string Nom { get; set; }
    }
     
    // ...
    // Au moment de la sauvegarde :
     
    public void Save(Confirmation confirmation)
    {
      XDocument xDoc = new XDocument();
      XmlSerializer serializer = new XmlSerializer(typeof(Confirmation));
      System.Xml.XmlWriter writer = xDoc.CreateWriter();
      serializer.Serialize(writer, confirmation);
      writer.Close();
     
      xDoc.Save("...");
    }
    Mais la solution de PatteDePoule est parfaite également !

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    316
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 316
    Par défaut super
    Bonjour PatteDePoule,

    Merci pour votre aide, ça marche...
    C'est mieux l'utiliser objets natif en .Net (XmlWriter) au lieu de faire comme j'ai fait et c'est pour cela que j'ai demandé


    Je vais voir comment je peux changer "prologue"
    En ce moment, je l'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?xml version="1.0" encoding="utf-8"?>
    et je vais ajouter une "instruction de traitement" qui sera :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?xml-stylesheet type='text/xsl' href='notreDasta.xslt'?>
    Je vais aussi voir comment je peux ajouter sous élément :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <articles>
    			<article>
    				<nom_article>Mono</nom_article>
    			</article>
    			<article>
    				<nom_article>Soso</nom_article>
    			</article>
    		</articles>
    Et faire une indentation des balises.

    J'ai changé un peu le début de votre code pour ne pas avoir des messages d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    using (XmlWriter writer = XmlWriter.Create(Server.MapPath("monRep/fichierTrater_" + strDate + ".xml")))
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    using (XmlWriter writer = XmlWriter.Create(Server.MapPath("monRep/fichierTrater_" + strDate + ".xml", settings))
    Merci encore

    Bonjour SetaSensei,

    Merci pour votre aide, je vais voir comment je peux utiliser XDocument avec le fonctionnement de XmlSerializer .

    Au premier regard, je trouve que c'est un peu complexe, mais il faut que je lise bien vos liens

    Merci encore

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Parser un fichier XML et écrire dedans en même temps
    Par El Saigneur dans le forum Format d'échange (XML, JSON...)
    Réponses: 6
    Dernier message: 27/06/2012, 17h57
  2. [Débutant] comment créer un fichier XML et enregistrer mes label.text dedans.
    Par jikaka dans le forum VB.NET
    Réponses: 3
    Dernier message: 19/08/2011, 13h42
  3. [C#] [XML] Comment créer un fichier XML
    Par pc152 dans le forum Windows Forms
    Réponses: 12
    Dernier message: 28/09/2004, 13h41
  4. [C#] Créer un fichier Xml à partir d'un objet
    Par Troopers dans le forum Windows Forms
    Réponses: 3
    Dernier message: 03/09/2004, 13h23
  5. [DOM] est ce qu'on peut créer un fichier xml en java ?
    Par miloud dans le forum Format d'échange (XML, JSON...)
    Réponses: 9
    Dernier message: 21/01/2004, 10h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo