Supprimer les balises d'un fichier texte

Signaler
Messages postés
90
Date d'inscription
samedi 5 juin 2010
Statut
Membre
Dernière intervention
6 mars 2015
-
Messages postés
90
Date d'inscription
samedi 5 juin 2010
Statut
Membre
Dernière intervention
6 mars 2015
-
bonjour,
j'ai un fichier texte plein de balises telles que (<DOC> , </DOCNO> , </TEXT> etc.) je veux les éliminer toutes pour avoir comme résultat seulement le texte.
ya t-il une fonction ou une instruction qui me permet de le faire sachant que je programme en c++.
j'espère bien que vous pouvez m'aider à le faire.

5 réponses

Messages postés
90
Date d'inscription
samedi 5 juin 2010
Statut
Membre
Dernière intervention
6 mars 2015

j'ai trouvé une solution je vais l'essayer, je pense qu'elleestplus simple;
c'est le fait de supprimer les lignes contenant "<" ou ">" car en fait les balises sont chacune dans une ligne;

si quelqu'un peut m'aider dans ce sens je serais vraiment incapable de le remercier.
Messages postés
3819
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
28 septembre 2020
113
Tu peux faire sauter toutes les balises xml via des expressions rationnelles.
Boost intègre un module pour le faire: boost::regex.

Si tu ne veux pas utiliser ceci, tu peux aussi tout simplement recopier la chaîne comme ceci:
- On considère un booléen qui est mis à vrai quand tu dois recopier, et faux quand tu dois ignorer.

- Tu copies les caractères si le booléen est vrai
- Si tu vois un <, alors tu passe le booléen à vrai
- Si tu vois un >, alors tu passe le booléen à faux

Tu obtiens alors la même chaine, sans les balises.

_____________________________________________
Historique de mes créations, et quelques articles:[ http://0217021.free.fr/portfolio
http://0217021.free.fr/portfolio]
Messages postés
90
Date d'inscription
samedi 5 juin 2010
Statut
Membre
Dernière intervention
6 mars 2015

merci pour l'idée,
je suis arrivée enfin à la réaliser, voici mon code:
#include<stdio.h>
#include<string.h>

int main ()
{
  FILE *F, *FW;
  char ch;
  int i;


 if (NULL (F fopen ("in.txt", "r")))
return -1;
  if (NULL (FW fopen ("out.txt", "w")))
return -1;
do
   { ch = fgetc(F);
  if (ch '<')  i 0;

  if (ch '>') i 1;
  if (i==1) fprintf(FW,"%c",ch);
   } while (ch != EOF);

  fclose (F);
  fclose (FW);
  system("pause");
  return 0;
}


il est exécutable mais le caractère > n'est jamais éliminé car on a mis i=1, donc je propose de l'éliminer tout seul comme étant un caractère,
que vous dites Mr CptPingu.
Messages postés
3819
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
28 septembre 2020
113
Quelques petites corrections:
- Ignore le caractère >
- Accepte le caractère > si pas dans une balise
- Ne met pas le caractère EOF dans le fichier

#include <stdio.h>
#include <string.h>

int main(void)
{
  FILE *f, *fw;
  char ch;
  int i = 1;

  if (NULL (f fopen ("in.txt", "r")))
    return -1;
  if (NULL (fw fopen ("out.txt", "w")))
    return -1;

  do
  {
    ch = fgetc(f);
    if (ch == EOF)
      break;

    if (ch == '<')
    {
      i = 0;
      continue;
    }
    else if (!i && ch == '>')
    {
      i = 1;
      continue;
    }

    if (i)
      fprintf(fw, "%c", ch);
  } while (ch != EOF);

  fclose(f);
  fclose(fw);

  return 0;
}


Exemple avec lequel j'ai testé:

<kikoo> test </toto> pouet


if (i >= 90)
{
  t = de > 89;
}


test


Sortie:

test pouet



if (i >= 90)
{
t = de > 89;
}


test


_____________________________________________
Historique de mes créations, et quelques articles:[ http://0217021.free.fr/portfolio
http://0217021.free.fr/portfolio]
Messages postés
90
Date d'inscription
samedi 5 juin 2010
Statut
Membre
Dernière intervention
6 mars 2015

très bien et merci, j'ai pas pensé au fait d' accepter le caractère > si pas dans une balise,
merci infiniment.