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 :

Impossible d'ajouter une ligne dans un fichier xml


Sujet :

C#

  1. #1
    Membre habitué
    Inscrit en
    Mai 2006
    Messages
    397
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 397
    Points : 130
    Points
    130
    Par défaut Impossible d'ajouter une ligne dans un fichier xml
    Bonsoir,

    J'ai un fichier XML suivant:

    Code XML : 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
    <?xml version="1.0" encoding="utf-8" ?>
    <todo>
      <item id="0" project="" area="" initiatedDate="" dueDate=""></item>
      <item id="1" project="" area="" initiatedDate="" dueDate=""></item>
      <item id="2" project="" area="" initiatedDate="" dueDate=""></item>
      <item id="3" project="" area="" initiatedDate="" dueDate=""></item>
      <item id="4" project="" area="" initiatedDate="" dueDate=""></item>
      <item id="5" project="" area="" initiatedDate="" dueDate=""></item>
      <item id="6" project="" area="" initiatedDate="" dueDate=""></item>
      <item id="7" project="" area="" initiatedDate="" dueDate=""></item>
      <item id="8" project="" area="" initiatedDate="" dueDate=""></item>
      <item id="9" project="" area="" initiatedDate="" dueDate=""></item>
      <item id="10" project="" area="" initiatedDate="" dueDate=""></item>
      <item id="11" project="" area="" initiatedDate="" dueDate=""></item>
      <item id="12" project="" area="" initiatedDate="" dueDate=""></item>
    </todo>

    Ainsi que le fichier XSD:

    Code XML : 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
    <?xml version="1.0" encoding="utf-8"?>
    <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
      <xs:element name="todo">
        <xs:complexType>
          <xs:sequence>
            <xs:element maxOccurs="unbounded" name="item">
              <xs:complexType>
                <xs:attribute name="id" type="xs:int" use="optional" />
                <xs:attribute name="project" type="xs:string" use="optional" />
                <xs:attribute name="area" type="xs:string" use="optional" />
                <xs:attribute name="initiatedDate" type="xs:dateTime" use="optional" />
                <xs:attribute name="dueDate" type="xs:dateTime" use="optional" />
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:schema>

    J'utilise la fonction suivante pour ajouter une ligne dans mon fichier xml:

    Code C# : 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
    public static void AddToDoItem(string XMLDataFile, string text, ComboBox project, ComboBox area, DateTime initiatedDate, DateTime dueDate)
            {
                XDocument xmlFile = XDocument.Load(@"./../../Data/" + XMLDataFile);
     
                XElement item = new XElement("item",
                    new XAttribute(Program.toDosFields[0].ToString(), GetXMLLastID(xmlFile) + 1),
                    new XAttribute(Program.toDosFields[1].ToString(), project.SelectedValue),
                    new XAttribute(Program.toDosFields[2].ToString(), area.SelectedValue),
                    new XAttribute(Program.toDosFields[3].ToString(), initiatedDate),
                    new XAttribute(Program.toDosFields[4].ToString(), dueDate));
     
                item.SetValue(text);
                MessageBox.Show(item.ToString());
     
                xmlFile.Add(item);
            }

    Le seul problème c'est que lorsque je lance mon programme, il me dit l'erreur suivante:

    This operation ould create an incorrectly structured document.
    Pourtant lorsque je regarde ce que je genère mon item, j'ai le code XML suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <item id="13" project="pif" area="AM" initiatedDate="2010-10-31T00:00:00+02:00" dueDate="2010-11-01T00:00:00+01:00">test</item>
    ce qui correspond bien à ce qu'il y a dans mon fichier xml :s

    Est-ce que quelqu'un aurait une idée de comment insérer une ligne? Est-ce que cela doit être fait d'une autre manière?

    Merci bien pour votre aide et bonne soirée

    L.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Remplace l'instruction suivante
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    xmlFile.Add(item);
    par
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    xmlFile.Root.Add(item);

    L'erreur se soulève parce qu'effectivement ton document XML ne peut avoir dexu éléments racines.

  3. #3
    Membre habitué
    Inscrit en
    Mai 2006
    Messages
    397
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 397
    Points : 130
    Points
    130
    Par défaut
    Merci bien!

    L'erreur disparaît en effet, mais la ligne ne s'ajoute pas dans le fichier. J'ai rajouté la ligne suivante:

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    xmlFile.Save(XMLDataFile);

    Mais la ligne ne s'ajoute toujours pas :s

    Est-ce qu'il y a un petit truc que j'oublierais?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bizarre quand même si y a aucune erreur qui s'affiche.

    Effectue un pas à pas détaillé pour voir ce qui se passe.

  5. #5
    Membre habitué
    Inscrit en
    Mai 2006
    Messages
    397
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 397
    Points : 130
    Points
    130
    Par défaut
    C'est très bizarre surtout que ma ligne apparait bien en tant que lastitem de ma variable item!

    Est-ce qu'il ne faut pas genre refermer mon fichier ou dans le style?

    [Edit] En fait c'était tout bête: le chemin d'accès à mes fichiers n'etait pas correct. Du coup en rajoutant le bon chemin, hop il a tout bien enregistré

  6. #6
    Invité
    Invité(e)
    Par défaut
    Peut être.

    Essaie de sauvegarder vers une autre destination autre dit en créant un autre fichier.

  7. #7
    Membre habitué
    Inscrit en
    Mai 2006
    Messages
    397
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 397
    Points : 130
    Points
    130
    Par défaut
    pas compris ta suggestion Oo. Tu veux dire essayer de sauvegarder dans un autre fichier?

  8. #8
    Invité
    Invité(e)
    Par défaut
    Oui. dans un autre fichier que tu auras créer

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

Discussions similaires

  1. ajouter une ligne dans un fichier excel en vb.net 2010
    Par AlexLyon dans le forum VB.NET
    Réponses: 2
    Dernier message: 08/08/2011, 20h35
  2. Ajouter une ligne dans 1000 fichiers HTML
    Par jesuismoi dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 11/11/2010, 18h02
  3. Remplacer ou ajouter une ligne dans un fichier
    Par jmelyn dans le forum Shell et commandes GNU
    Réponses: 18
    Dernier message: 09/04/2009, 15h37
  4. [DOM]ajouter une ligne dans un fichier xml
    Par aroua dans le forum APIs
    Réponses: 1
    Dernier message: 21/04/2008, 17h25
  5. ajouter une ligne dans un fichier
    Par e-medi dans le forum C
    Réponses: 7
    Dernier message: 21/09/2007, 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