begin process at 2012 02 09 19:53:30
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Base de données

 > 

XML

 > 

Parser Cmarkup


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Parser Cmarkup

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ée 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

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,312 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales