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 :

Débutant en stage [Débutant]


Sujet :

C#

  1. #1
    Membre averti
    Homme Profil pro
    Bts Sio 1ere année
    Inscrit en
    Juin 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Bts Sio 1ere année
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2013
    Messages : 11
    Par défaut Débutant en stage
    Bonjour a tous !

    Alors voila je viens demander votre aide car j'ai un projet pour mon stage en entreprise ( je suis en premiere année de BTS SIO).

    Par ou commencer.. pour faire simple la ou je travail des centaine de photo sont envoyer pour etre analyser et avec celles ci , des fichier XML correspondant a chacune des photo et contenant des métadonnés.

    Mon travail c'est de faire un programme qui prends dans le XML la ligne des nom ( <image>) et qui cherche la photo au nom correspondant et suivant le nom de l'image l'affichera dans une certaine liste ( imaginons photo de nuit , d'hiver d'été..) , le probleme ... C'est que je n'ai jamais étudier le XML que depuis hier..( Pour vous dire je me suis mit a chercher une bibliotheque XML pour visuel c# express pendant une apres midi pour rien ne sachant pas qu'il y en avait une de base...)

    Quel conseil/tutos , pourriez vous me fournir s'il vous plait ? ( je n'ai pas du tous d'idée par ou commencer tous cela , ou dans les example que je peu trouver je ne sais pas ce que je doit garder ou modifié du code, j'ai trouver un tuto sur ce site , mais je ne comprend vraiment pas toutes les ligne =/..)

    Ce que je voudrais faire pour commencer c'est extraire une données <active></active> ( qui est égale a 0 ou 1) d'un XML , et si elle est active et pour commencer pouvoir afficher console " ce ***** est actif"

    Je vous remercie d'avance ! afin de m'aider a complété avec succes ce projet. !

  2. #2
    Membre très actif
    Avatar de charouel
    Homme Profil pro
    Freelance
    Inscrit en
    Mars 2009
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 618
    Billets dans le blog
    9
    Par défaut
    Pour lire un fichier Xml, il suffit de faire appel au namespace System.Xml. La force de C# et .net est de fournir d'office un parser XML en C#, particulièrement confortable et finalement performant.
    Initiation c# XmlDocument
    Pour réaliser ces deux exercices, il est nécessaire de créer un fichier text.xml contenant les données suivantes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?xml version="1.0" encoding="utf-8" ?>
       <nodes id="999">
         <node value="01" text="text1" chercher="mot1" >Premier node</node>
         <node value="02" text="text2" chercher="mot2" >Second node</node>
         <node value="03" text="text3" chercher="mot3" >Troisième node</node>
         <node value="04" text="text4" chercher="mot4" >Quatrieme node</node>
         <node value="05" text="text5" chercher="mot5" >Cinquième node</node>
         <node value="06" text="text6" chercher="mot6" >Sixième node</node>
       </nodes>
    Le namespace System.Xml fournit un objet fantastique XmlDocument. La lecture d'un fichier XML fait appel à la même suite d'objets. XmlDocument pour charler le fichier XML. Puis XmlNodeList pour charger sa sélection correspondant au noeud qu'on souhaite avoir comme racine. En enfin XmlNode pour lire chaque ligne de sa sélection grace à un foreach(XmlNode in XmlNodeList).

    Voici un premier exemple :
    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
      using System;
     using System.Collections.Generic;
     using System.Text;
     using System.Xml;
     using System.IO;
     using System.Data;
     
     namespace XPath
     {
         class Program
         {
     
             static void Main(string[] args)
             {
                 Console.WriteLine("start");
                  XmlDocument unxml = new XmlDocument();
                 try
                 {
                     unxml.Load("test01.xml");
                 }
                 catch (Exception ex)
                 {
                     Console.WriteLine("Erreur");
     
                 }
     
                 XmlNodeList myChildNode = unxml.GetElementsByTagName("node");
                 foreach (XmlNode unNode in myChildNode)
                 {
                     Console.WriteLine("Attributs : value={0},text={1}, chercher={2}. Valeur : {3}.", unNode.Attributes[0].InnerText,
                     unNode.Attributes[1].InnerText, unNode.Attributes[2].InnerText, unNode.InnerText);
                      // il est possible de lire les attribut par leurs noms
                    Console.WriteLine("Attributs : value={0},text={1}, chercher={2}. Valeur : {3}.", unNode.Attributes["value"].InnerText);      // il est possible de remonter sur le node parent
     
     
                     Console.WriteLine("Valeur de l'attribut id du node parent nodes : {0}", unNode.ParentNode.Attributes[0].InnerText);
     
                 }
     
                 }
         }
      }
    Il est bien sur possible, si le noeud existe d'aller aussi dans une ChildNode[position]. Reste que si il est possible d'entrer un nom d'attribut en lieu et place de l'integer de position ( unNode.Attributes["value"].InnerText = unNode.Attributes[0].InnerText ), ce n'est pas pas possible pour le tag même comme pour unNode.InnerText.


    Chercher un noeud spécifique

    Pour trier et faire des recherches similaires à des selects SQL dans un XML on utilise le langage XPath (voir : http://www.w3schools.com/xpath/default.asp ).

    Sa mise en œuvre avec C# est des plus simples. Voici un exemple…
    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
     
     using System;
     using System.Collections.Generic;
     using System.Text;
     using System.Xml;
     using System.IO;
     using System.Data;
     
     namespace XPath
     {
         class Program
         {
     /* contenu du fichier xml test01.xml */
     
     //<?xml version="1.0" encoding="utf-8" ?>
     //<nodes>
     // <node value="01" text="text1" chercher="mot1" />
     // <node value="02" text="text2" chercher="mot2" />
     // <node value="03" text="text3" chercher="mot3" />
     // <node value="04" text="text4" chercher="mot4" />
     // <node value="05" text="text5" chercher="mot5" />
     // <node value="06" text="text6" chercher="mot6" />
     //</nodes>
             static void Main(string[] args)
             {
                 Console.WriteLine("start");
                 XmlDocument monXml = new XmlDocument();
                 XmlDocument maselection = new XmlDocument();
                 try
                 {
                     monXml.Load("test01.xml");
                     Console.WriteLine("XML Chargé");
                 }
     
                 catch (Exception ex)
                 {
                     Console.WriteLine("erreur {0}", ex.Message);
                 }
                // maselection = monXml.SelectSingleNode("//BBB[@value='01']");
     
     
                 XmlNode objNode;
                 XmlNode root = monXml.DocumentElement;
     
                 objNode = root.SelectSingleNode("//node[@value='03']");
     
                 Console.WriteLine("{0},{1},{2}", (string)objNode.Attributes[0].InnerText.ToString(), (string)objNode.Attributes[1].InnerText.ToString(), (string)objNode.Attributes[2].InnerText.ToString());
     
                 }
         }
     }

  3. #3
    Membre averti
    Homme Profil pro
    Bts Sio 1ere année
    Inscrit en
    Juin 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Bts Sio 1ere année
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2013
    Messages : 11
    Par défaut
    Merci beaucoup pour cette réponse claire et compléte !

  4. #4
    Membre très actif
    Avatar de charouel
    Homme Profil pro
    Freelance
    Inscrit en
    Mars 2009
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 618
    Billets dans le blog
    9
    Par défaut
    Tu met cette discutions résolut

  5. #5
    Membre émérite

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2011
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 487
    Par défaut
    A noter que System.Linq.Xml contient les nouvelles méthodes pour traiter le XML encore plus facilement grace aux requêtes LinQToXml. Si tu ne connais pas Linq, ça te permettra de découvrir une techno géniale qui change la vie
    Mon blog sur les technos .NET et Agile -> http://blog.developpez.com/maximepalmisano/

  6. #6
    Membre averti
    Homme Profil pro
    Bts Sio 1ere année
    Inscrit en
    Juin 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Bts Sio 1ere année
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2013
    Messages : 11
    Par défaut
    Merci de vos conseil malheureusement Charouel , je n'arrive pas a charger le XML Pour le premier exercice . ( j'ai un "erreur" sur la console ) pourtant j'ai bien mit le chemin d’accès comme j'ai pu le voir dans d'autre code ..

    unxml.LoadXml("C:\test01.xml");

  7. #7
    Membre très actif
    Avatar de charouel
    Homme Profil pro
    Freelance
    Inscrit en
    Mars 2009
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 618
    Billets dans le blog
    9
    Par défaut
    Normallement ça doit etre marcher tu met ton code comme ça pour savoir l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    try
                 {
                     unxml.Load("test01.xml");
                 }
                 catch (Exception ex)
                 {
                     Console.WriteLine(ex.Message);
     
                 }

  8. #8
    Membre averti
    Homme Profil pro
    Bts Sio 1ere année
    Inscrit en
    Juin 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Bts Sio 1ere année
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2013
    Messages : 11
    Par défaut
    Le message d'erreur affichais qu'il etait impossible de trouver test01.xml dans C:\....Temporary project\testxml\bin\debug

    Je l'ai donc coller a cette endroit .Maintenant qu'il le trouve , j'ai le message d'erreur suivant ("Il existe un caractere non valide dans l'encodage donné. Ligne 5 Position 59") .Ce qui correspond a la position du "e" de troiseme , c'est étrange..

    PROBLEME REGLER!

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 21/10/2014, 23h42
  2. Réponses: 16
    Dernier message: 24/09/2014, 10h59
  3. [Kylix] Le débutant en Kylix et Linux....
    Par Eclypse dans le forum EDI
    Réponses: 2
    Dernier message: 08/05/2002, 10h37
  4. Réponses: 3
    Dernier message: 07/05/2002, 16h06
  5. [HyperFile] 2 questions de débutant
    Par khan dans le forum HyperFileSQL
    Réponses: 2
    Dernier message: 29/04/2002, 23h18

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