Parser Cmarkup

cs_mickei Messages postés 15 Date d'inscription vendredi 10 janvier 2003 Statut Membre Dernière intervention 3 octobre 2007 - 2 oct. 2007 à 17:26
The_Guardian Messages postés 317 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 19 octobre 2007 - 3 oct. 2007 à 13:09
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

5 réponses

The_Guardian Messages postés 317 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 19 octobre 2007 1
2 oct. 2007 à 20:15
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 http://www.codeproject.com/soap/markupclass.asp donc je dirais que c'est pas possible pour le moment
=
Une autruche ne se cuit pas aux petits lardons
0
cs_mickei Messages postés 15 Date d'inscription vendredi 10 janvier 2003 Statut Membre Dernière intervention 3 octobre 2007
2 oct. 2007 à 20:24
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.
0
The_Guardian Messages postés 317 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 19 octobre 2007 1
2 oct. 2007 à 22:12
?

Une autruche ne se cuit pas aux petits lardons
0
cs_mickei Messages postés 15 Date d'inscription vendredi 10 janvier 2003 Statut Membre Dernière intervention 3 octobre 2007
3 oct. 2007 à 10:25
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 .
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
The_Guardian Messages postés 317 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 19 octobre 2007 1
3 oct. 2007 à 13:09
ah good ca:p

Une autruche ne se cuit pas aux petits lardons
0
Rejoignez-nous