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 :

[C#][XML] parcours XML débutant


Sujet :

C#

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2005
    Messages : 135
    Points : 84
    Points
    84
    Par défaut [C#][XML] parcours XML débutant
    Bonjour à tous,

    Actuellement je débute en C# et XML et je désirerais savoir quelle est le meilleur moyen pour parcourir des fichiers XML?
    J'ai regardé pas mal de tuto et de doc mais je cerne pas vraiment la façon dont ça fonctionne...

    Je travaille sur du WordML et je désirerais savoir comment on fait pour récupérer les premières cases des premières lignes de chaque tableaux.

    j'ai l'algo mais c'est la synthaxe qui me manque...

    je sais au moins créer un XmlDocument et le charger lol

    Merci de votre aide !

    Loic

    P.S.: je précise que ça pourrait être simple mais le XPath pourrait être compliqué car Word génère des section et sous sections et mes tableaux sont soit dans les sections , soit dans les sous sections...

  2. #2
    Membre averti Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Points : 410
    Points
    410
    Par défaut
    Salut

    Tu peux recuperer tes elements en fonction des balises et encore mieux en utilisant des expressions XPath..

    ++

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2005
    Messages : 135
    Points : 84
    Points
    84
    Par défaut
    ok merci.

    dont si j'ai bien compris la synthaxe de XPath , est ce que je cherche à faire correpondrait à ce chemin ?


    //w:tbl/w:tr[1]/w:tc[1]/w:t


    cela correspondrait à toutes les valeurs des premières cases des premières lignes de tous les tableau...

  4. #4
    Membre averti Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Points : 410
    Points
    410
    Par défaut
    ca y ressemble ...

    Il y a pas mal de bonnes docs sur XPath ici : http://xml.developpez.com/cours/

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2005
    Messages : 135
    Points : 84
    Points
    84
    Par défaut
    merci j'ai regardé mais maintenant j'ai une exception de levée de type XPathException qui me dit qu'il faut avoir un gestionnaire d'espace de nom ou un xsltContext...

    ça correpond à quoi?

  6. #6
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burundi

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 23
    Points : 17
    Points
    17
    Par défaut
    Tu dois le parcourir par les noeuds.
    Au cas où tu aurait utilisé la bibliothèque xpath et xsl, tu serais obligé de créer un navigateur xpath NodeNavigator Navigateur; //qui va chercher le chemin où se trouve ton fichier xml
    xpathNodeIterator Nodes; qui va se pointer sur le noeud de chaque enregistrement de ton fichier xml.
    Je te donner un exemple de recherche ci dessous que j'ai eu à trouver sur le net. L'essentiel n'est pas de tout savoir mais plutôt de savoir où tout se trouve.

    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    private static string chemin; //qui va être utiliser pour chercher le chemin (path)
     
          // Modifier des données XML déja existantes
            public static Model.compte RechercherCompteparNumero(string numcompte)
                {
                //on déclare et on crée une instance des variables nécésssaires pour la recherche    
                Model.compte client = new Model.compte();
                XPathDocument xpathDoc = new XPathDocument("Comptes.xml");
                XPathNavigator Navigator;
                XPathNodeIterator Nodes;
                //on affecte false à la variable PasSucess afin de vérifier par la suite si la recherche a été fructueuse
                client.PasSucces = false;
                //on crée un navigateur
                Navigator = xpathDoc.CreateNavigator();
                //On crée ici l'expression xpath de recherche de client à partir du numéro de compte
                chemin = "//Compte[@numcompte='" + numcompte + "'and status!='Deleted']";
                //on lance la recherche
                Nodes = Navigator.Select(Navigator.Compile(chemin));
                //on vérifie si la recherche a été fructueuse
                if (Nodes.Count != 0)
                {
                    Nodes.MoveNext(); //pour se positionner sur le noeud recherché
                    //Encodage des données dans la classe client
                    client.Numcompte = numcompte; ;//pas besoin de cherche cette donnée vu que c'est notre critère de recherche,on peut donc l'encoder
                    Nodes.Current.MoveToFirstChild();//on se déplace sur le premier noeud enfant
                    client.Typecompte = Nodes.Current.Value;
                    Nodes.Current.MoveToNext();
                    client.Datecreation = Convert.ToDateTime(Nodes.Current.Value);
                    Nodes.Current.MoveToNext();
                    client.Solde = double.Parse(Nodes.Current.Value);
                    Nodes.Current.MoveToNext();
                    if (client.GetType() == typeof(Entreprise))
                    {
                        client.Ent.Id = double.Parse(Nodes.Current.Value);
                        Nodes.Current.MoveToNext();
                        client.Ent.Ninea = Nodes.Current.Value;
                        Nodes.Current.MoveToNext();
                        client.Ent.Registre = Nodes.Current.Value;
                        Nodes.Current.MoveToNext();
                        client.Ent.Nom = Nodes.Current.Value;
                        Nodes.Current.MoveToNext();
                        client.Ent.Adresse = Nodes.Current.Value;
                        Nodes.Current.MoveToNext();
                        client.Ent.Tel = double.Parse(Nodes.Current.Value);
                        Nodes.Current.MoveToNext();
                        client.Ent.Fax = double.Parse(Nodes.Current.Value);
                    }
                    if (client.GetType() == typeof(PersonnePhysique))
                    {
                        client.Pp.Id = double.Parse(Nodes.Current.Value);
                        Nodes.Current.MoveToNext();
                        client.Pp.Nom = Nodes.Current.Value;
                        Nodes.Current.MoveToNext();
                        client.Pp.Prenom = Nodes.Current.Value;
                        Nodes.Current.MoveToNext();
                        client.Pp.Datenais = Convert.ToDateTime(Nodes.Current.Value);
                        Nodes.Current.MoveToNext();
                        client.Pp.Adresse = Nodes.Current.Value;
                        Nodes.Current.MoveToNext();
                        client.Pp.Tel = double.Parse(Nodes.Current.Value);
                        Nodes.Current.MoveToNext();
                        client.Pp.Fax = double.Parse(Nodes.Current.Value);
                    }
                }
                else //si aucun compte n'a été trouvé
                {
                    client.PasSucces = true;
                }
                return client; //renvoi de toutes les données dans une instance de la classe "compte"
            }

Discussions similaires

  1. Réponses: 0
    Dernier message: 10/06/2014, 16h35
  2. actionScript classe parcours XML
    Par LeXo dans le forum Flash
    Réponses: 2
    Dernier message: 26/06/2007, 16h06
  3. [C#]Aide pour gestion dataset / XML avec listview(débutant)
    Par Low-Fi dans le forum Windows Forms
    Réponses: 1
    Dernier message: 15/04/2006, 11h21
  4. Parcours xml
    Par jeff_! dans le forum Général JavaScript
    Réponses: 21
    Dernier message: 30/11/2005, 17h08
  5. [débutant]XML vers XML avec XSL
    Par tokamak dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 11/07/2005, 10h27

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