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 :

supprimer noeud XML


Sujet :

ASP.NET

  1. #1
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 22
    Points : 25
    Points
    25
    Par défaut supprimer noeud XML
    Bonjour à tous,

    Voilà mon souci : j'ai un fichier XML contenant des utilisateurs dans lequel je vais chercher diverses infos sur eux. Il est de cette forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?xml version="1.0" encoding="utf-8"?>
    <liste>
      <utilisateur>
        <Nom>essai</Nom>
        <Statut>Modérateur</Statut>
        <Service>ServiceEssai</Service>
      </utilisateur>
      <utilisateur>
        <Nom>test</Nom>
        <Statut>Administrateur</Statut>
        <Service>ServiceTest</Service>
      </utilisateur>
      ....
    </liste>
    Et le soucis arrive lors de la suppression, j'arrive bien à supprimer les fils d'un noeud, mais le noeud en lui-même reste présent.
    Par exemple si je supprime l'utilisateur 'test', je me retrouve avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?xml version="1.0" encoding="utf-8"?>
    <liste>
      <utilisateur>
        <Nom>essai</Nom>
        <Statut>Modérateur</Statut>
        <Service>ServiceEssai</Service>
      </utilisateur>
      <utilisateur>
      </utilisateur>
      ....
    </liste>
    En réalité la méthode RemoveAll me supprime les noeuds fils mais laisse le père...

    Voici le code behind :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim docXML As XmlDocument = New XmlDocument
    docXML.Load("le_fichier.xml")
     
    Dim xpath As String = "le_xpath"
    Dim xmlElt As XmlNode = docXML.SelectSingleNode(xpath)
     
    If xmlElt IsNot Nothing Then
        xmlElt.ParentNode.RemoveAll()
        docXML.Save("le_fichier.xml")
    End If
    Auriez-vous une idée pour retirer le "<utilisateur></utilisateur>" SVP ?
    Merci par avance.

    Bonne soirée.

  2. #2
    Membre actif Avatar de yroubag
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2004
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mai 2004
    Messages : 162
    Points : 224
    Points
    224
    Par défaut
    Ex:
    XmlNodeListe.RemoveChild(XmlNodeUtilisateur)

    http://msdn.microsoft.com/fr-fr/libr...ld(VS.80).aspx
    Yroubag
    Bien poser les questions, c’est tout un art.
    Où tout dépend, bien sûr, de la réponse que l’on veut obtenir. -André Frossard

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par Shatter Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim xpath As String = "le_xpath"
    Ca aiderait si on savait ce qu'il y a à la place de "le_xpath"
    Je suppose que ton XPath sélectionne l'élément Nom ? Il vaudrait mieux sélectionner l'élément utilisateur...

    Un truc comme ça devrait faire l'affaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim docXML As XmlDocument = New XmlDocument
    docXML.Load("le_fichier.xml")
     
    Dim xpath As String = "/liste/utilisateur[Nom='test']"
    Dim xmlElt As XmlNode = docXML.SelectSingleNode(xpath)
     
    If xmlElt IsNot Nothing Then
        xmlElt.ParentNode.Remove(xmlElt)
        docXML.Save("le_fichier.xml")
    End If

  4. #4
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 22
    Points : 25
    Points
    25
    Par défaut
    Ah bah voilà, au final à force d'essayer plein de chose ça a fonctionné
    L'idée c'était juste de remonter de deux ParentNode (je ne sais pas si ça se dit...). Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ' on enregistre le xpath
            Dim xpath As String = "/liste/utilisateur/Nom[text()=""" & TextBox2.Text & """]"
            Dim xmlElt As XmlNode = docXML.SelectSingleNode(xpath)
     
            If xmlElt IsNot Nothing Then
                Dim xmlU As XmlNode = xmlElt.ParentNode
                xmlElt.ParentNode.ParentNode.RemoveChild(xmlU)
                docXML.Save(Request.PhysicalApplicationPath + "./XML/utilisateurs.xml")
            End If
    Merci pour votre aide !

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    tag stp...

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

Discussions similaires

  1. [DOM XML] Supprimer noeud XML/PHP 5
    Par bobo27110 dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 31/07/2012, 15h49
  2. [JDOM] Supprimer noeud xml
    Par pendoRa dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 06/04/2011, 10h31
  3. [XSLT] supprimer noeuds du xml
    Par chris11fr dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 31/07/2009, 11h48
  4. [DOM] supprimer un noeud XML
    Par hicham285 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 12/04/2008, 20h28
  5. supprimer noeud XML
    Par rainlily dans le forum ASP.NET
    Réponses: 3
    Dernier message: 24/07/2007, 12h21

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