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++/CLI Discussion :

XmlWriter & mise en page


Sujet :

C++/CLI

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Avril 2005
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2005
    Messages : 87
    Points : 65
    Points
    65
    Par défaut XmlWriter & mise en page
    Bonjour à tous

    je désire écrire en XML dans un fichier. Jusque là, tout va bien
    Par contre, c'est au niveau de la mise en page que je sèche un peu...
    Voici un exemple de mise en page de ce que je voudrais réaliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <root>
      <element><a/></element>
      <element><a/></element>
    </root>
    donc pour cela, j'écris le code suivant :
    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
    XmlWriterSettings^ settings = gcnew XmlWriterSettings();
    settings->CloseOutput = true;
    settings->Indent = true;
    settings->IndentChars = "  "; //default value
    settings->NewLineChars = "\r\n"; //default value
    settings->NewLineOnAttributes = false; //default value
    settings->OmitXmlDeclaration = true;
     
    XmlWriter^ writer = XmlWriter::Create("test.xml", settings);
    delete settings;
    writer->WriteStartDocument();
    writer->WriteStartElement(L"root");
     
    for (i=0 ; i<2 ; i++) {
    	writer->WriteStartElement(L"element");
     
    	// creation d'un XmlWriter qui utiliser 'writer' comme 
    	// writer sous-jacent avec les settings par défaut, donc 
    	// la propriété 'indent' à false
    	XmlWriter^ xwItem = XmlWriter::Create(writer);
     
    	xwItem->WriteStartElement(L"a");
    	xwItem->WriteEndElement(); // a
    	xwItem->WriteEndElement(); // element
    }
     
    writer->WriteEndElement(); // root
    writer->WriteEndDocument();
    delete writer;
    et je tombe sur ce résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <root>
      <element>
        <a />
      </element>
      <element>
        <a />
      </element>
    </root>
    J'ai essayé en explicitant la création d'un nouveau XmlWriterSettings (avec l'attribut indent à false bien sûr ) pour mon second XmlWriter, mais le résultat est le même.

    quelqu'un aurait'il déjà rencontré une histoire similaire (ou tout simplement l'a fait!!!).
    merci par avance pour vos avis.

  2. #2
    Membre du Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Avril 2005
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2005
    Messages : 87
    Points : 65
    Points
    65
    Par défaut
    j'ai trouvé une solution, mais qui tiens de la bidouille..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    for (i=0 ; i<2 ; i++) {
    	// creation d'un XmlWriter qui utiliser 'writer' comme 
    	// writer sous-jacent avec les settings par défaut, donc 
    	// la propriété 'indent' à false
    	XmlWriter^ xwItem = XmlWriter::Create(writer);
     
    	xwItem->WriteStartElement(L"element");
     
    	xwItem->WriteRaw(L""); // <-- voici l'astuce
     
    	xwItem->WriteStartElement(L"a");
    	xwItem->WriteEndElement(); // a
    	xwItem->WriteEndElement(); // element
    }
    Mais ça n'explique pas plus mon problème ; ça le solutionne simplement.

Discussions similaires

  1. [VB6+API][Impression] Mise en page
    Par HPJ dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 06/09/2004, 17h11
  2. [CR.NET][VS.NET] mise en page et sections
    Par guignol dans le forum SDK
    Réponses: 8
    Dernier message: 06/08/2004, 15h07
  3. mise en page (Header and Footer) en XML-XSL.
    Par christine dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 01/03/2004, 16h31
  4. [CR] Mise en page
    Par akolyto dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 14/10/2003, 12h22
  5. [mise en page] pour bien indenter son code
    Par bihorece dans le forum C++Builder
    Réponses: 4
    Dernier message: 06/08/2003, 16h14

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