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 :

Recherche à travers un fichier XML


Sujet :

C#

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 296
    Points : 99
    Points
    99
    Par défaut Recherche à travers un fichier XML
    Bonsoir,
    j'ai crée un fichier XML contenant une liste de codes d'erreurs avec leurs significations, mais je ne sais pas comment chercher un code particulier.
    Mon fichier est structuré de la façon suivante,voici un exemple.
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?xml version="1.0" encoding="utf-8"?>
    <ListingCodeErreur>
    <Erreur ID="1100" ><Definition classe="1" Plage="Général" Text="Paramètres en dehors de la plage de valeurs autorisées"/></Erreur>
    <Erreur ID="1101" ><Definition classe="" Plage="Général" Text="Le Paramètre index n'existe pas"/></Erreur>
    ...
    <Classe ID="0" ><Definition Text="Avertissement (aucune réaction)" Couleur='#145A14'></Classe>
    </ListingCodeErreur>
    Je cherche une solution pour récupérer les infos associés à un code erreur.
    Je pensais créer une structure contenant les infos associées à mon code erreur, par 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
     
        public struct ID_Erreur
        {
            public UInt16 ID;
            public byte Classe;
            public string Plage;
            public string Texte;
        }
     
        public struct Classe_Erreur
        {
            public UInt16 ID;
            public string Texte;
            public string Color;
        }
    Quelle est la meilleure méthode pour lire ce fichier XML ?

    Merci

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 752
    Points : 5 457
    Points
    5 457
    Par défaut
    Je vois deux possibilités simples à mettre en oeuvre.

    La première consiste à déserialiser ton XML vers une liste de ID_Erreur (il faudra utiliser une classe au lieu d'une structure)
    Et ensuite rechercher ce qu'il te faut avec une requête Linq
    https://stackoverflow.com/questions/...-xml-to-object
    https://docs.microsoft.com/fr-fr/dot...e-linq-queries

    La deuxième méthode consiste à utiliser XPath pour sélectionner le nœud qui 'intéresse.
    https://docs.microsoft.com/fr-fr/dot...ath-navigation

  3. #3
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    @Popo : +1 pour la serialization

    Il y a plein de sujet à ce propos sur le forum...regardes dans les sujets récents qui traitent de xml.

    ++

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 296
    Points : 99
    Points
    99
    Par défaut
    Merci pour les liens mais Je n'arrive pas à décomposer mes lignes.
    Dans les exemples chaque est bien séparé par exemple
    <Step><Name>Name1</Name><Desc>Desc1</Desc></Step>
    dans mon cas je ne sais pas comment découper mes lignes
    <Erreur ID="1100" ><Definition classe="3" Plage="Général" Text="Paramètres"/></Erreur
    j'ai commencé à écrire la classe
    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
    [XmlRoot("ErreurList")]
    public class ErreurList
    {
        [XmlElement("Erreur")]
        public List<Erreur> Erreurs { get; set; }
    }
     
    public class Erreur
    {
        [XmlElement("ID")]
        public string ID { get; set; }
     
        [XmlElement("Classe")]
        public string Classe { get; set; }
     
        [XmlElement("Plage")]
        public string Plage { get; set; }
     
        [XmlElement("Text")]
        public string Text { get; set; }
    }
    et j'ai essayé ça pour la lecture
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
                XmlSerializer serializer = new XmlSerializer(typeof(ErreurList));
                using (FileStream fileStream = new FileStream("ConfigErreur.xml", FileMode.Open))
                {
                    ErreurList result = (ErreurList)serializer.Deserialize(fileStream);
                }
    mais je ne comprends pas comme réaliser la serialization et surtout comment je passe en paramètre 1100 et que cela me ressorte la ligne associé.

    Merci

  5. #5
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    La solution est ICI


    ++

Discussions similaires

  1. [XSLT] Comment rechercher dans un fichier xml
    Par abdoulax dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 22/10/2006, 19h28
  2. Probleme dans mon code recherche dans un fichier Xml
    Par dederfred dans le forum Delphi
    Réponses: 11
    Dernier message: 21/10/2006, 16h51
  3. [XML] Recherche Banque de fichiers XML pour tester
    Par MoTUmBo dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 14/10/2006, 11h08
  4. Faire une recherche dans un fichier XML
    Par Devilish_Seraph dans le forum XML/XSL et SOAP
    Réponses: 7
    Dernier message: 21/01/2006, 13h41
  5. recherche dans un fichier xml (castor)
    Par pingoui dans le forum Format d'échange (XML, JSON...)
    Réponses: 8
    Dernier message: 06/09/2004, 14h28

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