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

ASP.NET Discussion :

Question XPATH très simple


Sujet :

ASP.NET

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 121
    Points : 67
    Points
    67
    Par défaut Question XPATH très simple
    Hello tous,

    soit le doc xml suivant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <WSD_DataSet xmlns="http://tempuri.org/WSD_DataSet.xsd">
      <PM_Actualite>
        <datesortie>20060912</datesortie> 
      </PM_Actualite>
      <PM_Actualite>
        <datesortie>20060612</datesortie> 
      </PM_Actualite>
      <PM_Actualite>
        <datesortie>20060512</datesortie> 
      </PM_Actualite>
    </WSD_DataSet>
    Afin d'épurer des noeuds superflus, je veux supprimer toutes les balises <PM_Actualite>

    Soit donc le code managé suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    XmlElement racine = x_doc.DocumentElement;
    XmlNodeList noeuds_a_virer = racine.SelectNodes("//PM_Actualite");
    foreach (XmlNode noeud in noeuds_a_virer)
    {
      // On se positionne sur le noeud père et supprime fils
      XmlNode noeud_parent = noeud.ParentNode;
      noeud_parent.RemoveChild(noeud);
    }
    Problème : ne contient rien ... Je triture mon expression xpath mais rien n'y fait, en plus c'est surement trivial.

    Merci.

  2. #2
    Membre confirmé
    Avatar de strat0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2003
    Messages : 288
    Points : 598
    Points
    598
    Par défaut
    Comme ça, à vue de nez, ton code est juste, donc c'est forcément autre chose...

    Es-tu sûr que tes nœuds s'appellent bien "PM_Actualite"?
    Es-tu sûr que ton document XML se charge bien (j'imagine que oui sinon tu aurais une erreur de toute façon)?

    Sinon essaie directement de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XmlNodeList noeuds_a_virer = x_doc.SelectNodes("//PM_Actualite");

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 121
    Points : 67
    Points
    67
    Par défaut non
    non ce n'est pas ça je ne comprends pas ce que ça peut être.

  4. #4
    Membre confirmé
    Avatar de strat0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2003
    Messages : 288
    Points : 598
    Points
    598
    Par défaut
    Est-ce que tu peux nous montrer le fichier XML complet ou est-ce trop long/confidentiel?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 121
    Points : 67
    Points
    67
    Par défaut voilà
    xml est en entier. Voici le code managé en entier si tu veux.
    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
            // Supression des noeuds XML superflus
            public String Suppression_des_Noeuds_XML(TextReader o_tr, string[] noeuds_a_supprimer)
            {
                XmlDocument x_doc = new XmlDocument();
                x_doc.Load(o_tr);
                // Boucle sur les noeuds à supprimer
                for (int i = 0; i < noeuds_a_supprimer.Length; i++)
    			{
                    //XmlElement racine = x_doc.DocumentElement;
                    //XmlNodeList noeuds_a_virer = 
                        //x_doc.DocumentElement.SelectNodes("//" + noeuds_a_supprimer[i]);
                    XmlNodeList noeuds_a_virer = x_doc.SelectNodes("//PM_Actualite");
                    foreach (XmlNode noeud in noeuds_a_virer)
    	            {
                        // On se positionne sur le noeud père et supprime fils
                        XmlNode noeud_parent = noeud.ParentNode;
                        noeud_parent.RemoveChild(noeud);
                    }
                }
                return x_doc.ToString();
            }

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 121
    Points : 67
    Points
    67
    Par défaut au passage
    return x_doc.ToString() est bien sur erroné

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 121
    Points : 67
    Points
    67
    Par défaut c mon xml qui est vérolé, j'essaye avec
    un autre doc plus basique et ça marche.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 121
    Points : 67
    Points
    67
    Par défaut
    surement le noeud racine ->

    <WSD_DataSet xmlns="http://tempuri.org/WSD_DataSet.xsd">

    qui met la grouille

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    331
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 331
    Points : 180
    Points
    180
    Par défaut
    Essaye un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    XmlNamespaceManager nsmgr = new XmlNamespaceManager(x_doc.NameTable);
     
    nsmgr.AddNamespace("x", "http://tempuri.org/WSD_DataSet.xsd");
     
    XmlNodeList noeuds_a_virer = x_doc.SelectNodes("//x:PM_Actualite");
    ça devrait le faire

Discussions similaires

  1. petite question, peut-être très simple
    Par BigColino dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 15/02/2012, 11h53
  2. Question à priori très simple
    Par jay2975 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 17/07/2011, 02h03
  3. question très simple mais je ne m'en souvient plus
    Par jbggg dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 10/11/2009, 15h04
  4. [Tableaux] question très simple
    Par H-bil dans le forum Langage
    Réponses: 14
    Dernier message: 28/05/2006, 13h29

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