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 :

parser un fichier xml complexe.


Sujet :

C#

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 568
    Par défaut parser un fichier xml complexe.
    Bonjour;
    J'ai la méthode suivante pour récupérer la valeur d'un attribut particulier selon son chemin dans l'arborescence:
    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
    public static ArrayList SearchXPathNavAttribute(string xPathString, string attribute)
                 {
                        // Initilisation des variables
                        XPathDocument xpathDoc;
                        XPathNavigator xpathNavigator;
                        XPathNodeIterator xpathNodeIterator;
                        XPathExpression expr;
                        ArrayList listOfAttributes = new ArrayList();
     
     
                        // Parcours du fichier XML
                        try
                        {
                               xpathDoc = new XPathDocument(XMLFilePath);
                               xpathNavigator = xpathDoc.CreateNavigator();
     
     
                               expr = xpathNavigator.Compile(xPathString);
                               xpathNodeIterator = xpathNavigator.Select(expr);
     
     
                               while (xpathNodeIterator.MoveNext())
                               {
                                      // On récupère l'attribut
                                      listOfAttributes.Add(xpathNodeIterator.Current.GetAttribute(attribute, ""));
                               }
                        }
                        catch (Exception e)
                        {
                            System.Console.WriteLine(e);
                        }
     
                        return listOfAttributes;
                 }
    Mon problème est que pour les fichiers xml complexe (avec des namespaces par exemple ou plusieurs balises au même niveau) cette methode ne me retourne rien.

    Dois-je ajouter une instruction pour ignorer les namespaces de mes fichier xml?

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 568
    Par défaut
    Apparemment je dois utiliser le XmlNamespaceManager
    Le problème c'est que j'en ai 3 dans mon fichier xml
    J'ai essayé de les gérer comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    // Ajout d'un XmlNamespaceManager
    XmlNamespaceManager nsmgr = new XmlNamespaceManager(new NameTable());
    // Pour xmlns=" notre namespace"
    nsmgr.AddNamespace("ab", "premier_namespace");
    //xmlns:ds="http://www.w3.org/2000/09/xmldsig# xmldsig_core_schema.xsd"
    nsmgr.AddNamespace("ds", "http://www.w3.org/2000/09/xmldsig# xmldsig_core_schema.xsd");
    //xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    nsmgr.AddNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance");
    Mais il manque quelques precision, je continue mes recherches

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 568
    Par défaut
    ça marche ;-)
    Il faut juste préfixer les elements dans les expression de recherche.

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

Discussions similaires

  1. Parser un fichier XML complexe
    Par zerkos dans le forum Android
    Réponses: 6
    Dernier message: 29/01/2013, 18h19
  2. [xslt] Parser 2 fichiers XML
    Par malekms dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 30/12/2005, 12h22
  3. Parser un fichier XML
    Par Charlinecha dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 11/07/2005, 17h18
  4. [SAX] parser un fichier xml en Java
    Par royou dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 10/02/2005, 17h12
  5. parser des fichier .xml en perl
    Par djibril dans le forum Modules
    Réponses: 13
    Dernier message: 18/05/2004, 17h08

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