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

Delphi Discussion :

Suppression de nœud vide dans fichier XML sous Delphi 7


Sujet :

Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 9
    Points : 10
    Points
    10
    Par défaut Suppression de nœud vide dans fichier XML sous Delphi 7
    Bonjour à tous,
    Je suis en train de créer un fichier XML pour gérer des remontées d'informations et je me retrouve avec des noeuds vides que j'aimerais supprimer je galère depuis plusieurs jours sans trouver la solution. Voici un bout du fichier XML
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <LogEventList>
       <ClipLogList>
          <Title>AngeDemon</Title>
      </ClipLogList>
      <ClipLogList>
          <Title>LesYeux2</Title>
      </ClipLogList>
    .....
    etc....
      <ClipLogList/>
      <ClipLogList/>
      <ClipLogList/>
      <ClipLogList/>
      <ClipLogList/>
    </LogEventList>

    Lorsque mon fichier XML est créé il me mets en plus à la fin du fichier un tas de <ClipLogList/> vide ?? je voudrais supprimer tous ces <ClipLogList/> qui ne servent à rien afin de terminer le XML proprement.
    Malheureusement je ne trouve pas comment faire existe t-il une fonction pour supprimer ces noeuds ? j'ai tenté une boucle avec :
    for i:=0 to cliploglist.count-1 do
    begin
    if cliploglist.item[i].Title=' ' then cliploglist.delete(i);
    end;
    mais il me jette sans avoir tout effacé ??
    Si quelqu'un peut me donner une piste cela me rendrait énormément service.
    Merci beaucoup pour vos aides..
    didou

  2. #2
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 496
    Points : 2 762
    Points
    2 762
    Billets dans le blog
    10
    Par défaut
    Tu dépose ton xml dans un stringList et tu utilise StringReplace du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var
      sl1 : TStringList ;
    begin
      sl1 := TStringList.Create ;
      sl1.Text := monfichierxml ;
      sl1.Text := stringReplace (sl1.Text,'<ClipLogList/>','',[rfReplaceAll]) ;
      sl1.SaveToFile('mesdonnees.xml') ;
      sl1.clear ;

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    Merci pour ta réponse rapide, je ne pensais pas pouvoir utiliser de TstringList pour un fichier XML j'avais peur de perdre la mise en forme XML, cependant lorsque j'utilise ton code il me supprime tous les <ClipLogList/> de mon fichier mais moi je veux uniquement supprimer ceux de la fin entre le dernier <ClipLogList/> et le <LogEventList/> ??

    Merci à toi si tu peux encore m'aider

  4. #4
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 496
    Points : 2 762
    Points
    2 762
    Billets dans le blog
    10
    Par défaut
    Citation Envoyé par didou2dek Voir le message
    Merci pour ta réponse rapide, je ne pensais pas pouvoir utiliser de TstringList pour un fichier XML j'avais peur de perdre la mise en forme XML, cependant lorsque j'utilise ton code il me supprime tous les <ClipLogList/> de mon fichier mais moi je veux uniquement supprimer ceux de la fin entre le dernier <ClipLogList/> et le <LogEventList/> ??

    Merci à toi si tu peux encore m'aider
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sl1.Text := stringReplace (sl1.Text,'<ClipLogList/>','###',[]) ;
    sl1.Text := stringReplace (sl1.Text,'<ClipLogList/>','',[rfReplaceAll]) ;
    sl1.Text := stringReplace (sl1.Text,'###','<ClipLogList/>',[]) ;

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    Merci beaucoup tu me sauves la mise je partais sur du trop complexe et ne connaissais pas cette fonction !! Merci au forum d'avoir des gens comme toi qui donne de leur temps

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

Discussions similaires

  1. Tester si un élément est vide dans fichier XML
    Par Jb_One73 dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 01/03/2015, 13h09
  2. Réponses: 2
    Dernier message: 26/09/2012, 16h07
  3. Réponses: 1
    Dernier message: 22/11/2008, 20h50
  4. Réponses: 5
    Dernier message: 02/04/2008, 15h07
  5. Problème éléments vides dans du XML sous VB6
    Par matteli dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 21/11/2007, 16h01

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