La classe FileParser parse un fichier .SCVLOG et insère autant de lignes dans la ListView de la fenêtre qu'il y a de messages SOAP dans le fichier. La classe utilise le parser XML 'Expat' qui est open-source, très rapide, et SAX (parsing au fil de l'eau). Elle gère les gros fichiers grace à un système de buffer.
More...
#include <FileParser.h>
|
| void | open (std::string filename, const void *fenetre) |
| | Ouvre un fichier SVCLOG.
|
| int | parse (bool useCRLF) |
| | Fonction principale pour déclencher le parsing par Expat.
|
| void | close () |
| | Ferme le fichier une fois le parsing terminé.
|
|
| static void XMLCALL | startElementHandler (void *userData, const XML_Char *name, const XML_Char **atts) |
| | Ce handler (statique) est appelé à chaque balise ouvrante. Selon la balise, on cree un nouveau message, ou bien on stocke le body du message. La librairie Expat fournit une methode permettant de savoir à quel octet, on est dans le fichier XML: XML_GetCurrentByteIndex(XML_Parser p)
|
| static void XMLCALL | endElementHandler (void *userData, const XML_Char *name) |
| | Ce Handler est appelé à chaque balise fermante. On traite les informations stockées dans userData.
|
| static void XMLCALL | dataHandler (void *userData, const XML_Char *content, int length) |
| | Ce Handler est appelé à chaque fois qu'il y a un Content. Le ContentType a été positionné par le Handler StartElement. Si le Content est à cheval sur 2 buffers, le dataHandler est appelé deux fois, et il faut concaténer.
Voir sur https://stackoverflow.com/questions/609376/geting-xml-data-using-xml-parser-expat#609736.
|
| static void | processContentData (void *userData) |
| | Mémorise dans le message, les informations contenue dans la variable statique contentData, en fonction du type mémorisé dans les userData.
|
|
|
static const unsigned int | MAX_MESSAGES = 32000 |
| | Qt ne peut afficher que 32762 messages dans la ListView.
|
La classe FileParser parse un fichier .SCVLOG et insère autant de lignes dans la ListView de la fenêtre qu'il y a de messages SOAP dans le fichier. La classe utilise le parser XML 'Expat' qui est open-source, très rapide, et SAX (parsing au fil de l'eau). Elle gère les gros fichiers grace à un système de buffer.
- Author
- David de Lorenzo
◆ close()
| void FileParser::close |
( |
void | | ) |
|
Ferme le fichier une fois le parsing terminé.
- See also
- open()
◆ dataHandler()
| void XMLCALL FileParser::dataHandler |
( |
void * | userData, |
|
|
const XML_Char * | content, |
|
|
int | length ) |
|
static |
Ce Handler est appelé à chaque fois qu'il y a un Content. Le ContentType a été positionné par le Handler StartElement. Si le Content est à cheval sur 2 buffers, le dataHandler est appelé deux fois, et il faut concaténer.
Voir sur https://stackoverflow.com/questions/609376/geting-xml-data-using-xml-parser-expat#609736.
- Parameters
-
| userData | : Non utilisé. |
| content | : Le contenu textuel de la section. |
| length | : Le Content n'est pas NULL-terminated: il faut utiliser length.
|
◆ endElementHandler()
| void XMLCALL FileParser::endElementHandler |
( |
void * | userData, |
|
|
const XML_Char * | name ) |
|
static |
Ce Handler est appelé à chaque balise fermante. On traite les informations stockées dans userData.
- Parameters
-
| userData | : Pointeur sur les données mémorisées lors de lors de l'ouverture des balises. |
| name | : Le nom de la balise.
|
◆ open()
| void FileParser::open |
( |
std::string | filename, |
|
|
const void * | fenetre ) |
Ouvre un fichier SVCLOG.
- Parameters
-
| filename | : le nom du fichier SVCLOG à parser. |
| fenetre | : pointeur sur la fenetre contenant la listView de Message List.
|
◆ parse()
| int FileParser::parse |
( |
bool | useCRLF | ) |
|
Fonction principale pour déclencher le parsing par Expat.
- Parameters
-
| useCRLF | : TRUE si le fichier contient des Retour Chariot au format Windows (CRLF): typiquement des fichiers XML. FALSE si le fichier contient des Retour Chariot au format LINUX (LF) ou 1 seule ligne. Typiquement des fichiers SVCLOG |
- Returns
- Retourne un code d'erreur (0 si tout s'est bien passé).
◆ processContentData()
| void FileParser::processContentData |
( |
void * | userData | ) |
|
|
static |
Mémorise dans le message, les informations contenue dans la variable statique contentData, en fonction du type mémorisé dans les userData.
- Parameters
-
| userData | : Pointeur sur les données mémorisées lors de lors de l'ouverture des balises.
|
◆ startElementHandler()
| void XMLCALL FileParser::startElementHandler |
( |
void * | userData, |
|
|
const XML_Char * | name, |
|
|
const XML_Char ** | atts ) |
|
static |
Ce handler (statique) est appelé à chaque balise ouvrante. Selon la balise, on cree un nouveau message, ou bien on stocke le body du message. La librairie Expat fournit une methode permettant de savoir à quel octet, on est dans le fichier XML: XML_GetCurrentByteIndex(XML_Parser p)
- Parameters
-
| userData | : Structure pour les données à mémoriser. |
| name | : Nom de la balise. |
| atts | : Tableau des attributs. |
The documentation for this class was generated from the following files:
- E:/Sources/Repositories/VOR/TOOLS/SOAP-Message-Viewer/Sources/FileParser.h
- E:/Sources/Repositories/VOR/TOOLS/SOAP-Message-Viewer/Sources/FileParser.cpp