parcours fichier HTML

parcours fichier HTML - C++ - Programmation

Marsh Posté le 06-03-2013 à 15:22:20    

bonjour à tous
 
contexte :  
 
j'ai un fichier HTML
un dossier contenant des photo
 
le fichier HTML utilise certaines des photos du dossier.
 
but :  
 
Supprimer les photos non-utilisées  
 
démarche envisagée
 
parcours du HTML
récupération de tout les noms des images .jpg
parcours de mon dossier image
 
si l'image de mon dossier n'est pas présente dasn la liste des noms, je la supprime
sinon je passe a la deuxième image du dossier.
 
je me bat mais pas moyen de m'en sortir.
 
pouvez vous m'aider?

Reply

Marsh Posté le 06-03-2013 à 15:22:20   

Reply

Marsh Posté le 06-03-2013 à 16:44:00    

Je te conseille d'utiliser TinyXML2 (http://www.grinninglizard.com/tinyxml2/index.html)
C'est un parser XML multiplateforme qui fonctionne comme le DOM en javascript. Il va te permettre de récupérer (et modifier?) assez facilement des données dans un document XML.
Et en plus il est très simple à installer : il suffit juste de l'inclure dans le projet comme si c'était un fichier source classique que tu aurait écrit.

 

Pour parcourir les fichiers et dossier, utilise "dirent.h"
Il est lui aussi multiplateforme et est distribué avec le compilateur (pas de fichiers supplémentaires à installer)
Voici le tuto du site du zéro :
http://www.siteduzero.com/informat [...] c-dirent-h

 

EDIT:
Pour supprimer un fichier, il y a une fonction "remove" dans stdio:
http://www.cplusplus.com/reference/cstdio/remove/


Message édité par crom29 le 06-03-2013 à 16:53:23

---------------
Mods: HAF922 | Shinobi XL White    GitHub     Admin de La Colère d'Aurile, serveur RP-Action Neverwinter Nights 2
Reply

Marsh Posté le 06-03-2013 à 17:00:41    

le fait que c'est un fichier HTML que j'ai a traiter ca marchera quand meme avec tinyxml??

Reply

Marsh Posté le 06-03-2013 à 17:03:06    

Ça a besoin d'être fait en C++?
C'est le genre de chose qui se fait rapide en perl, ça.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 06-03-2013 à 18:28:59    

un fichier HTML réponds aux normes XML et est donc un document XML ;)
 
C'est vrai qu'il existe d'autres langages plus pratiques pour faire ça ^^


---------------
Mods: HAF922 | Shinobi XL White    GitHub     Admin de La Colère d'Aurile, serveur RP-Action Neverwinter Nights 2
Reply

Marsh Posté le 06-03-2013 à 19:29:07    

crom29 a écrit :

un fichier HTML réponds aux normes XML et est donc un document XML ;)
 
C'est vrai qu'il existe d'autres langages plus pratiques pour faire ça ^^

Euh non!
Un tag meta ou link pas fermé par un /> ou un tag fermant c'est pas du XML.
A+,
 


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 06-03-2013 à 20:43:13    

oui ca doit etre fait en c++ car c un morceau d'une application c++ plus importante :)
 
si je lit une ligne que la SPLIT ?
 

Reply

Marsh Posté le 06-03-2013 à 22:14:43    

Citation :

si je lit une ligne que la SPLIT ?

Et en français, ça veut dire quoi?
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 07-03-2013 à 08:27:23    

pardon pour la réponse non française ;)
 
si je lit une par une les ligne de mon fichier a linstar d'un fichier txt
 
que pour chaque ligne je split avec comme séparateur [" "],  
que je recherche dans mon split l'extension JPG
 

Reply

Marsh Posté le 07-03-2013 à 10:20:16    

C'est pas une mauvaise idée, mais à moins d'en savoir plus sur ton fichier html (qui est peut être généré avec des contraintes particulières), tu ne seras pas certain que ce que tu as trouvé est dans un tag image, en particulier si ton fichier a le tag coupé sur deux lignes:

<p> avec une ligne qui est coupée ainsi <img
 src="smiley.gif" alt="Smiley face" height="42"
 width="42">


A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 07-03-2013 à 10:20:16   

Reply

Marsh Posté le 07-03-2013 à 10:39:00    

le fichier HTML est généré automatiquement en sorti de CATIA...

 

par contre si je split ma ligne

 

je fait un Endwith(".JPG" )

 

et apres je resplit avec comme séparateur [ " ]

 

ainsi

 

string de base <img src="smiley.gif" alt="Smiley face" height="42" width="42">

 

string splité <img | src="smiley.gif" | alt="Smiley | face" | height="42" | width="42">

 

String finissant par " *.gif "    src="smiley.gif"

 

split par [ " ] => smiley.gif

 


Ma question du coup comment avec la bibliothèque STDIO, je doit faire pour lire l'intégralité de ma ligne et la mettre dans un string, et surtout comment passer a la ligne d'apres...


Message édité par jeremyL1 le 07-03-2013 à 10:41:51
Reply

Marsh Posté le 07-03-2013 à 12:09:09    

Qu'est-ce que la librairie stdio vient faire ici? si tu écris en C++, tu as la librairie standard avec getline de disponible.
Sinon, autant faire du C.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 07-03-2013 à 14:51:31    

Code :
  1. FILE * pFile;
  2. String ^chemin = "c:\\home\\fichier.html";
  3. char* ch = static_cast<char *>(System::Runtime::InteropServices::Marshall::StringToHGlobalAnsi(chemin).ToPointer());
  4. pFile = fopen (ch,"r" );
  5. if (pFile !=NULL)
  6. {
  7.     //traitement
  8.     // comment faire le getline...
  9.    fclose(pFile);
  10. }


 
VOila en gros comment je fait mon ouverture de fichier...

Reply

Marsh Posté le 07-03-2013 à 15:04:52    

pfiou c'est méchament hybride C/C++ ça ^^

 

Si tu veux faire en C, de mémoire c'est comme ça:

Code :
  1. #define BUFFER_SIZE 100
  2. [...]
  3. char* input[BUFFER_SIZE] = {0};
  4. getline(input, BUFFER_SIZE, pFile);
 

@gilou : Merci de la précision pour le "/>" ;)
TinyXML2 fonctionne en tout cas très bien avec le HTML


Message édité par crom29 le 07-03-2013 à 15:06:41

---------------
Mods: HAF922 | Shinobi XL White    GitHub     Admin de La Colère d'Aurile, serveur RP-Action Neverwinter Nights 2
Reply

Marsh Posté le 07-03-2013 à 15:09:31    

ca marche apres le fait que c'est pas un programme robuste, ce n'est aps très grave.
 
mon getline ne focntionne pas ....

Reply

Marsh Posté le 07-03-2013 à 17:16:22    

jeremyL1 a écrit :

Code :
  1. FILE * pFile;
  2. String ^chemin = "c:\\home\\fichier.html";
  3. char* ch = static_cast<char *>(System::Runtime::InteropServices::Marshall::StringToHGlobalAnsi(chemin).ToPointer());
  4. pFile = fopen (ch,"r" );
  5. if (pFile !=NULL)
  6. {
  7.     //traitement
  8.     // comment faire le getline...
  9.    fclose(pFile);
  10. }


 
VOila en gros comment je fait mon ouverture de fichier...

Oui, mais ça c'est pas exactement du C++
C'est un mélange de code C et de C++-managed de Microsoft (truc qui n'est pas exactement du C++, comme on le voit avec String ^chemin) spécifique à Windows.
 
En C++ standard, on va faire:

Code :
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4. using namespace std;
  5. ........
  6.   string line;
  7.   ifstream myfile ("c:\\home\\fichier.html" );
  8.   if (myfile.is_open())
  9.   {
  10.     while ( myfile.good() )
  11.     {
  12.       getline (myfile,line);
  13.       // et on traite ensuite la ligne
  14.     }
  15.     myfile.close();
  16.   }


 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed