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 !

Sujet : Parser Cmarkup [ Base de données / XML ] (mickei)

mardi 2 octobre 2007 à 17:26:08 | Parser Cmarkup

mickei

Bonjour,

J'utilise le parser CMarkup, mais je n'arrive pas à autoindenter les lignes, est ce que quelqu'un utilise le même parser et y arrive, si oui comment?

Merci pour votre aide

mardi 2 octobre 2007 à 20:15:07 | Re : Parser Cmarkup

The_Guardian


Look at the start and end tags in <QTY>1</QTY>. The struct contains the offsets of the  left and right of both the start and end tags (i.e. all the < and >  signs). The reserved integer is not currently used but could be used for a  delete flag and/or level (i.e. depth) in the hierarchy to support indentation.  The other three integers are indexes to the structs for the parent, child and  next elements.
==

Donc en gros ça dit que l'indentation a pas l'air d'être implémentée sur CMarkup [ Lien ] donc je dirais que c'est pas possible pour le moment
===
Une autruche ne se cuit pas aux petits lardons

mardi 2 octobre 2007 à 20:24:15 | Re : Parser Cmarkup

mickei

Merci,
J'étais aussi tombé sur cette page et en avait déduis la même chose mais j'espérais quand même.
Tant pis reste à faire un post traitement.

mardi 2 octobre 2007 à 22:12:40 | Re : Parser Cmarkup

The_Guardian

?

Une autruche ne se cuit pas aux petits lardons

mercredi 3 octobre 2007 à 10:25:14 | Re : Parser Cmarkup

mickei

Au final je fais le traitement suivant juste avant d'enregister le fichier :

void XXX::AutoIndentMarkup(CMarkup *pMarkup)
{
    CString sDocument;
    CString sLigne;
    CString sEnd("");
    CString sNomBalise;
    UINT32    ulDebLigne=0;
    UINT32    ulFinLigne=0;
    UINT32    ulNiveau=0;
    UINT32    ulNiveauSuivant=0;
    UINT32    ulCmptNiveau;

    //recupere le fichier xml
    sDocument = pMarkup->GetDoc();
    //initialise la premiere ligne
    ulFinLigne = sDocument.Find("\r\n",ulFinLigne);
    //tant que l on n est pas a la fin du fichier
    while (ulFinLigne != -1)
    {
        //recupere la ligne
        sLigne = sDocument.Mid(ulDebLigne, ulFinLigne - ulDebLigne);
       
        //traite la ligne
        //si balise non de commentaire
        if (sLigne.Left(1) == "<" && sLigne.Mid(1,1) != "?" && sLigne.Mid(1,1) != "!" )
        {
            //recupere la balise
            sNomBalise = sLigne.Mid(sLigne.ReverseFind('<')+2,sLigne.GetLength() - sLigne.ReverseFind('<') - 3);
            //si c est une balise fermante decalage cette ligne
            if ( sLigne.Mid(1,1) == "/" )
            {
                ulNiveauSuivant--;
                ulNiveau = ulNiveauSuivant;
            }
            //si balise vide dans ce ca pas de decalage
            else if (sLigne.Mid (sLigne.GetLength() - 2,1) == "/")
            {
            }
            //si la balise ouvrante et fermante sur la meme ligne pas de decalage
            else if ( sLigne.Mid( 1, sNomBalise.GetLength()) == sNomBalise && sLigne.Mid( sLigne.GetLength() - sNomBalise.GetLength() - 2,1) == "/" )
            {
            }
            //si balise ouvrante le decalae est a la ligne suivante
            else
            {
                ulNiveauSuivant++;
            }
        }

        for (ulCmptNiveau = 0; ulCmptNiveau < ulNiveau; ulCmptNiveau++)
        {
            sLigne = "  " + sLigne;

        }

        sEnd+= sLigne + "\r\n";
        ulNiveau = ulNiveauSuivant;

        //recherche la ligne suivante
        ulDebLigne = ulFinLigne+2;
        ulFinLigne = sDocument.Find("\r\n",ulFinLigne+2);
    }

    pMarkup->SetDoc(sEnd);

}


Ca marche niquel, si ça peut servir à quelqu'un .

mercredi 3 octobre 2007 à 13:09:45 | Re : Parser Cmarkup

The_Guardian

ah good ca:p

Une autruche ne se cuit pas aux petits lardons



Cette discussion est classé dans : arrive, utilise, parser, cmarkup


Répondre à ce message

Sujets en rapport avec ce message

MS-DOS merde a fond ! [ par Pingouin57 ] J'en peut plus ! J'utilise Turbo C pour programmer et j'arrive pas à le metter en mode plein écran !C'est la même chose pour TOUS mes programmes sous Code barre [ par bilal ] Bonjour,mon prblem c'est que je n'arrive pas a imprimer un code barre que j'affiche via un ocx.je voudrai un code qui pourrai m'aider comprendre comme API Windows [ par Greck0 ] Bonjour tout le monde,Je suis actuellement un débutant en prog et je fais un prog pour quelqu un, pour l instant j arrive convenablement a le faire ma changement de curseur [ par magic_Nono ] Hellolors du déplacement d'élements à la souris, (Drag-n-drop)il est plutot intéressant de changer le pointeur.(le but est d'avoir un produit assez in Décorations des fonctions [ par Nebula ] Bonjour,J'utilise MSVC et MinGW pour compiler des DLLs. Avec MinGW, je supprime les décorations grâce à une option du compilateur (ce qui m'épargne la Combobox Win32 [ par zame ] Bonjour.Voila , j'ai cherché sur la msdn , je ne comprend pas.Je dois recuperer le texte de l'element selectionné dans un combobox .Avec une liste ou Convertir une char en string [ par juki_webmaster ] Bonjour,Je vient de faire pas mal de progrés en cpp, et je suis arriver à un probléme de variable.Je declare, et j'utilise une variable de type char : Utilisation des CArchive [ par Bb_TiTi ] bonjour,je commence a utiliser les CArchive et j'ai quelques questions:- comment passer d'une CArchive a un objet? quand j'ai réécris la fonction seri Exception [ par ROnE91 ] Bonjour, J'ai une exception qui fait planter mon programme : il arrive qu'une fonction tente d'utiliser une méthode d'un objet qui vient d'etre détrui un tableau [ par oeckenshield ] j'ai une tableau avec condition de saisie,j'arrive à poser les condition mais, j'arrive pas à effacer la derniere saisie cad la saisie erroner.


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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,452 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é.