Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

98 commentaire(s) de xterminhate sur des sources sur tout CodeS-SourceS

Le : 21/08/2008 17:55:51
Source : MINXL (MINIMALIST XML LIBRARY) : GÉNÉRATEUR/ANALYSEUR/TRAITEMENT DE FLUX/FICHIERS XML EN C++
Bonjour,

MinXL utilise le gestionnaire d'exception afin de faciliter le traitement d'un fichier XML anormal / corrompu. A mon sens, tu ne devrais donc avoir qu'un seul et unique bloc try-catch, encadrant l'appel à la fonction de "configuration" de ton application.

A partir de ce point, on suppose le fichier XML parfaitement intègre et valide. Pour simplifier l'interprétation du fichier XML par l'application, on prendra soin de choisir une structuration XML systématique. Ainsi, aucun traitement d'exception n'est a implémenter au moment de l'analyse du fichier XML.

Par exemple, le noeud <drives> comprendra un certains nombre de fils <drive> et seulement <drive>, comprenant tous un attribut "data" (renseigné ou vide). Le noed <drive> comprendra un certain nombre de fils <select>, comprenant tous un attribut "label" (renseigné ou vide). Etc.

Par conséquent, en prenant soin d'utiliser les fonctions membres child_at( size_t ), nb_children(), attribute_at( size_t ) et nb_attributes(), aucune exception ne sera levée par MinXL. Cela tend à simplifier le code la fonction "configuration" de cette application.

Pour gérer les exceptions au fil de l'analyse du fichier, dans le but de résister à une corruption partielle du fichier XML, je ne vois pas d'autre solution que de gérer les exceptions à chaque appel à MinXL avec un bloc try-catch dédié. L'autre technique serait d'utiliser le principe du C avec un retour de fonction à 0 et une fonction globale du genre get_error() afin d'obtenir une information détaillée sur la nature de l'erreur...

Effectivement, il manque une fonction pour supprimer tous les enfants d'un noeud, par exemple remove_childS(). Pour l'instant, c'est à l'utilisateur de MinXL d'implémenter une éventuelle boucle. En outre, il n'y a pas d'autre solution que de faire un boucle pour supprimer les fils un par un. Néanmoins, il est possible d'utiliser la fonction remove_child() sur le père du noeud dont on veut supprimer les fils. Attention, cela supprime également le noeud en question.

Je vais réfléchir à intégrer la fonction remove_childs() et remove_attributes() dans une prochaine révision de MinXL.

Je suis preneur de proposition pour une gestion plus souple des exceptions.

Cordialement,
Xterminhate.












Le : 19/08/2008 11:22:08
Source : MINXL (MINIMALIST XML LIBRARY) : GÉNÉRATEUR/ANALYSEUR/TRAITEMENT DE FLUX/FICHIERS XML EN C++
Bonjour,

Je crée un nouveau projet C++. J'ajoute les fichiers xml.hpp et .cpp. J'écris le code source suivant :

#include <iostream>
using namespace std;
#include "xml.hpp"

int main()
{
    MinXL::t_xml_node root;
    root.parse_from_file( "test.xml" );

    MinXL::t_xml_node drives = root.child_at("drives");
    size_t drive_count = drives.nb_children();
    cout << drive_count << " drives!" << endl;

    for( size_t index = 0; index != drive_count; ++index )
        cout << "Drive #" << index << " = " << drives.child_at(index).attribute_value_at("data") << endl;

    return 0;
}

J'obtiens  l'affichage suivant :

3 drives!
Drive #0 = //nas/sources
Drive #1 = //nas/demos
Drive #2 = d:/jeux

Process returned 0 (0x0)   execution time : 0.015 s
Press any key to continue.

CQFD.

Pour utiliser TinyXML, il faut vraiment aimer les pointeurs dans tous les sens... ^^

Cordialement,
Xterminhate.


Le : 24/07/2008 17:38:16
Source : MINXL (MINIMALIST XML LIBRARY) : GÉNÉRATEUR/ANALYSEUR/TRAITEMENT DE FLUX/FICHIERS XML EN C++
s=k->read("/Workbook/Worksheet/Table/Row/Cell/Data:0");
s=k->read("/Workbook/Worksheet/Table/Row/Cell/Data:1");
s=k->read("/Workbook/Worksheet/Table/Row/Cell/Data:2");
etc....


Le : 16/03/2008 18:56:27
Source : MINXL (MINIMALIST XML LIBRARY) : GÉNÉRATEUR/ANALYSEUR/TRAITEMENT DE FLUX/FICHIERS XML EN C++
Bonjour,

L'optimisation dont il est question dans le texte d'introduction est terminée. J'en tiendrai compte pour la prochaine mise à jour.

Je souhaite avancer dans l'implémentation d'une API proche de Xpath pour xml_manip.

Ta contribution est la bienvenue. J'aimerais pouvoir en discuter avec toi par email (xterminhate@wanadoo.fr).

Cordialement,
Xterm-in'Hate.


Le : 16/03/2008 09:09:15
Source : MINXL (MINIMALIST XML LIBRARY) : GÉNÉRATEUR/ANALYSEUR/TRAITEMENT DE FLUX/FICHIERS XML EN C++
Bonjour Christophe,

D'abord, je te remercie pour tes commentaires et conseils au sujet de ce code source.

Apres diverses formalations assez complexe pour traiter de manière optimale tous les cas, j'ai finalement modifié mon code source de la façon suivante pour garantir le bon fonctionnement sous GCC et les dernières versions de Microsoft :

#if !defined( _MSC_VER )
    typedef std::size_t size_t;
#endif // !defined(_MSC_VER)


#if !defined( _MSC_VER )
    _tmp_str.clear();
#else
    _tmp_str = "";
#endif // !defined(_MSC_VER)

Concernant la factorisation de 'copy' et 'move', la modification est un peu plus compliquée car la partie 'free' prend en argument un résultat intermédiaire de 'copy'. J'ai factorisé 'cop' et 'move' en introduisant une fonction d'implémentation déclarée privée. J'ai aussi ajouté un test clair (18bis) dans xml_test.cpp pour vérifier le comportement de 'copy' et 'move'.

Langage Xpath est très intéressant pour la classe xml_manip. Je ne le connaissais pas à l'époque de la rédaction de ce code source. Par exemple, j'utilise le "." pour accéder un attribut alors que c'est un "@" dans Xpath. Et puis il y a les opérateur de recherche.... Intéressant mais il va me falloir trouver la motivation pour me replonger a fond dans mon code pour réaliser ces évolutions.

Concernant les deux opérateurs qui se ressemblent,
- le premier permet de retourner une référence constante (accès en lecture seul d'une valeur/attribut),
- le seconde retourne un référence vers une valeur/attribut (accès en lecteur et écrite).

GCC choisit automatique le bon opérateur en fonction du contexte appelant.

La premiere formulation permet de s'affranchir d'une copie dans la plupart des cas d'utilisation. La seconde formulation a pour but de pouvoir écrire le code suivant : xmlm( "/players/number" ) = "2";

Une mise à jour de MinXL est disponible dans quelques minutes.

Cordialement,
Xterm-in'Hate.


Le : 13/02/2008 11:44:31
Source : CLASSE XML ULTRA LITE
Bonjour bAzilew,

C'est sympa de m'avoir cité dans ton projet.

Bonne continuation :-)

Xterminhate.


Le : 22/09/2007 10:48:55
Source : MINXL (MINIMALIST XML LIBRARY) : GÉNÉRATEUR/ANALYSEUR/TRAITEMENT DE FLUX/FICHIERS XML EN C++
Merci pour ton commentaire. Ton projet semble tres interessant. Bonne chance !


Le : 05/02/2007 23:59:39
Source : [WIN32 & LINUX] THREADS C++
Bonjour, merci pour ce commentaire.

En relisant le code, je trouve effectivement que la notation est perfectible.

Pour la pause, j'avoue ne pas avoir le temps de rafraichir le source. Sais tu t'en occcuper ?

Merci.


Le : 06/12/2006 22:25:56
Source : CLASSE INTERPRETEUR DE COMMANDES
Bonjour, merci !

Je ne vois pas ce qui pose probleme, le saut de ligne ? le throw ? Peut etre en précisant les types ex_commande_incomplete et ex_commande_inconnue de en ajoutant "t_interpreteur::" devant ?

Je vous invite soit à utiliser un autre compilateur gratuit (Visual Express ou GCC pour Windows).

Amicalement,
Xter.


Le : 29/11/2006 08:18:17
Source : MINXL (MINIMALIST XML LIBRARY) : GÉNÉRATEUR/ANALYSEUR/TRAITEMENT DE FLUX/FICHIERS XML EN C++
L'indentation dans un fichier XML n'a pas vraiment de sens. C'est l'outil qui affiche le contenu du fichier qui doit s'en charger (IE le fait par exemple). En effet, tes tabulation vont se retrouver dans la champ valeur de la clé.

Remplace .Atecivated par Activated dans ton fichier XML et le code devrait marcher. Le '.' est utile à la classe de manipaltion pour faire la différence entre une clé et un attribut dans le chemin passé en argument.

J'utilise toujours cette classe pour mes projet et elle me donne entière sastifaction.

Bonne chance !

Xter




1 2 3 4 5 6 7 8 9 10


Nos sponsors

Sondage...



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,530 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.