IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XML Discussion :

[TinyXML] Gestion des retours à la ligne


Sujet :

XML

  1. #1
    Membre habitué
    Avatar de yvesall
    Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Novembre 2006
    Messages
    208
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 208
    Points : 127
    Points
    127
    Par défaut [TinyXML] Gestion des retours à la ligne
    bonjour a tous,

    j'ai peu l'habitude d'utiliser le XML pour géré mes données mais pour le coups je dois y passer

    j'utilise TinyXML comme lib pour me parser mes fichiers

    tout marche a merveille sauf que pour le bloc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <FR>Attention !
    Toute les modifications seront perdus.
    Voulez-vous créer un nouveau fichier ?</FR>
    les \r\n de fin de ligne ne sont pas pris en compte, et directement remplacé par un espace

    le bloc ci-dessus est encodé suivant la DEC RT-11 (non-unix)
    ce qui fait que mes retours à la ligne sont nécessairement des 'CR + LF'

    ce qui donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <FR>Attention !\r\nToute les modifications seront perdus.\r\nVoulez-vous créer un nouveau fichier ?</FR>
    j'ai vérifié les valeurs lors de la récupération du texte depuis TinyXML et j'ai bel et bien le caractère 0x20 (' ') à la place de mes '\r\n'

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    for (; pElem; pElem = pElem->NextSiblingElement())
    {
        const char* pKey = pElem->Value();
        const char* pText = pElem->GetText();
        if (pKey && pText)
        {
            if (std::string(pKey) == "Name")
                currentLSKey = pText;
            else if (std::string(pKey) == m_CurrentLanguage)
            {
                currentLSVal = pText;//<==ICI pText A DEJA ' ' A LA PLACE DE \r\n
                break ;
            }
        }
    }
    y a t-il un quelconque moyen d'avoir mes \r\n ?

    merci
    i = i++;

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Points : 1 543
    Points
    1 543
    Par défaut
    Salut,

    (Je n'utilise pas TinyXML)

    En XML, suivant la norme, S (white space) consists of one or more space (#x20) characters, carriage returns, line feeds, or tabs.
    Dans le documentation de TinyXML on trouve :
    White space

    The world simply does not agree on whether white space should be kept, or condensed. For example, pretend the '_' is a space, and look at "Hello____world". HTML, and at least some XML parsers, will interpret this as "Hello_world". They condense white space. Some XML parsers do not, and will leave it as "Hello____world". (Remember to keep pretending the _ is a space.) Others suggest that __Hello___world__ should become Hello___world.

    It's an issue that hasn't been resolved to my satisfaction. TinyXML supports the first 2 approaches. Call TiXmlBase::SetCondenseWhiteSpace( bool ) to set the desired behavior. The default is to condense white space.

    If you change the default, you should call TiXmlBase::SetCondenseWhiteSpace( bool ) before making any calls to Parse XML data, and I don't recommend changing it after it has been set.
    Je te suggère de tenter d'abord le SetCondenseWhiteSpace( false ).

    Si ça ne fonctionne toujours pas et que tu peux changer le format d'entrée, essaye de mettre une section CDATA autour du texte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <FR><![CDATA[Attention !
    Toute les modifications seront perdus.
    Voulez-vous créer un nouveau fichier ?]]></FR>
    MAT.

  3. #3
    Membre habitué
    Avatar de yvesall
    Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Novembre 2006
    Messages
    208
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 208
    Points : 127
    Points
    127
    Par défaut
    de mémoire TinyXML ne gère pas les CDATA
    toujours est-il que je vais tester ce dont tu parles
    merci
    i = i++;

  4. #4
    Membre habitué
    Avatar de yvesall
    Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Novembre 2006
    Messages
    208
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 208
    Points : 127
    Points
    127
    Par défaut
    teste concluant

    ajouter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TiXmlBase::SetCondenseWhiteSpace(false); //bool static donc pas d'instance nécessaire
    en début de parsing me récupère bien les linefeeds

    ayant pourtant visualisé la main page de la doc TinyXML, je suis passé à coté de l'info O_o

    merci grandement Mat007
    i = i++;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Gestion des retours à la ligne
    Par Delphi-ne dans le forum ASP.NET
    Réponses: 6
    Dernier message: 12/10/2012, 17h59
  2. Affichage des retours à la ligne
    Par joquetino dans le forum Langage
    Réponses: 1
    Dernier message: 29/03/2006, 20h23
  3. Écrire des retours à la ligne
    Par Metallic-84s dans le forum Langage
    Réponses: 2
    Dernier message: 15/03/2006, 09h05
  4. [MSXML][C++] enregistrer avec des retours de lignes
    Par themadmax dans le forum XML
    Réponses: 3
    Dernier message: 15/11/2005, 18h48
  5. [MySQL] Gestion des retour à la ligne
    Par Husqvarna dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 31/10/2005, 10h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo