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

XSL/XSLT/XPATH XML Discussion :

probleme d'ouverture fermeture noeud c#/xpath


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 3
    Points : 4
    Points
    4
    Par défaut probleme d'ouverture fermeture noeud c#/xpath
    Bonjour je me suis appuyé sur le tutoriel de Jean-François Determe pour développé mon application mais voilas je doit écrire un sous nœud avec un attribut et xpath ferme le premier nœud pour écrire le nouveau nœud voici un exemple de mon xml que je voudrais obtenir :
    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
     
     <?xml version="1.0" encoding="UTF-8"?>
    <Membres>
      <Membre id="1">
        <Nom>dudul</Nom>
        <Prenom>lucien</Prenom>
        <Semaine ids="1">
          <Lundi>Null</Lundi>
          <Mardi>Null</Mardi>
          <Mercredi>Null</Mercredi>
          <Jeudi>Null</Jeudi>
          <Vendredi>Null</Vendredi>
          <Samedi>Null</Samedi>
          <Dimanche>Null</Dimanche>
        </Semaine>
        <Semaine ids="2">
          <Lundi>Null</Lundi>
          <Mardi>Null</Mardi>
          <Mercredi>Null</Mercredi>
          <Jeudi>Null</Jeudi>
          <Vendredi>Null</Vendredi>
          <Samedi>Null</Samedi>
          <Dimanche>Null</Dimanche>
        </Semaine> 
          </Membre> //la fermeture du noeud </Membre> et la ou je le veux 
          </Membres>
    Voici le code que j obtient lors de l'écriture :
    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
     
     <?xml version="1.0" encoding="UTF-8"?>
    <Membres>
      <Membre id="1">
        <Nom>dudul</Nom>
        <Prenom>lucien</Prenom>
     </Membre>  //mon premier noeud qui se ferme alors que je ne veux pas 
        <Semaine ids="1">
          <Lundi>Null</Lundi>
          <Mardi>Null</Mardi>
          <Mercredi>Null</Mercredi>
          <Jeudi>Null</Jeudi>
          <Vendredi>Null</Vendredi>
          <Samedi>Null</Samedi>
          <Dimanche>Null</Dimanche>
        </Semaine>
        <Semaine ids="2">
          <Lundi>Null</Lundi>
          <Mardi>Null</Mardi>
          <Mercredi>Null</Mercredi>
          <Jeudi>Null</Jeudi>
          <Vendredi>Null</Vendredi>
          <Samedi>Null</Samedi>
          <Dimanche>Null</Dimanche>
        </Semaine> 
          </Membres>
    Voici le code c# qui me permet de généré le XML
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
     XmlDocument XmlDoc = new XmlDocument();
                XPathNavigator Navigator;
                XPathNodeIterator Nodes;
                Int32 ID;
                string fichier = "Membres.xml";
                int i;
     
     XmlDoc.Load(fichier);
     
                    Navigator = XmlDoc.CreateNavigator();
                     ExpXPath = "//MaxID";
                    Nodes = Navigator.Select(Navigator.Compile(ExpXPath));
                    Nodes.MoveNext();
                    /* On place l'ID le plus élevé du document dans la variable ID */
                    ID = Nodes.Current.ValueAsInt;
                    /* On incrémente la valeur du noeud MaxID car une fois notre nouveau noeud 
                     * créé, l'ID le plus élevé du document sera aussi incrémenté */
                    Nodes.Current.SetValue((ID + 1).ToString());
                    /* On se place sur le noeud ayant l'ID le plus élevé */
                    ExpXPath = "//Membre[@id='" + ID.ToString() + "']";
                    Nodes = Navigator.Select(Navigator.Compile(ExpXPath));
                    if (Nodes.Count != 0)
                    {
                       Nodes.MoveNext();
                        /* On crée le noeud principal (Membre). */
                        Nodes.Current.InsertElementAfter("", "Membre", "", "");
                        /* On se place sur le noeud ainsi créé. */
                        Nodes.Current.MoveToNext(XPathNodeType.Element);
                        ID++; /* On incrémente ID pour que sa valeur soit identique à celle se
                           * trouvant dans le noeud MaxID. */
                        /* Encodage des données */
                        Nodes.Current.CreateAttribute("", "id", "", ID.ToString());
                        Nodes.Current.AppendChildElement("", "Prenom", "", Customer.m_prenomMembre);
                        Nodes.Current.AppendChildElement("", "Nom", "", Customer.m_nomMembre);
     
                        for (i = 1; i <= 53; i++)
                        {
                            Nodes.MoveNext();
                           Nodes.Current.InsertElementAfter("","Semaine","","");
                            Nodes.Current.MoveToNext(XPathNodeType.Element);
                          Nodes.Current.CreateAttribute("","ids","",Convert.ToString(i));
     
     
     
                            Nodes.Current.AppendChildElement("","Lundi","","Null");
                            Nodes.Current.AppendChildElement("", "Mardi", "","Null");
                            Nodes.Current.AppendChildElement("", "Mercredi", "","Null");
                            Nodes.Current.AppendChildElement("", "Jeudi", "","Null");
                            Nodes.Current.AppendChildElement("", "Vendredi", "","Null");
                            Nodes.Current.AppendChildElement("", "Samedi", "","Null");
                            Nodes.Current.AppendChildElement("", "Dimanche", "","Null");
     
                        }
     
     
     
                        XmlDoc.Save("Membres.xml");
                        return true;
                    }
    Mon gros souci c est que le nœud <Membre> se ferme alors que j voudrais qu il inclue toute les semaines comme dans le premier exemple
    Si quelqu 'un a la solution merci de m'aider car la je bloque

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 3
    Points : 4
    Points
    4
    Par défaut Une idée
    quelqu 'un aurait il une idée?
    Car je suis toujours bloquée.

Discussions similaires

  1. Problème ouverture/fermeture noeud JTree
    Par Rheym dans le forum Composants
    Réponses: 3
    Dernier message: 26/03/2007, 08h34
  2. [visual c++]Probleme d'ouverture de solution
    Par dje41 dans le forum MFC
    Réponses: 2
    Dernier message: 12/04/2005, 11h41
  3. [JDOM] probleme de suppresion de noeud
    Par JavaEli dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 21/03/2005, 16h41
  4. Probleme d'ouverture de formulaire
    Par nemesys971 dans le forum IHM
    Réponses: 11
    Dernier message: 01/02/2005, 15h08
  5. [DOM] Probleme d'ajout de noeud
    Par romain3395 dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 30/11/2004, 13h13

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