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

JavaScript Discussion :

Problème de retour à la ligne


Sujet :

JavaScript

  1. #1
    Membre actif Avatar de AurelBUD
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    202
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mai 2004
    Messages : 202
    Points : 212
    Points
    212
    Par défaut Problème de retour à la ligne
    Bonjour,

    J'utilise la fonction suivant pour parser du xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function loadXmlfromString(XmlString)
    {
    	try{
    		var XmlParser = new DOMParser();
    		return XmlParser.parseFromString(XmlString, "text/xml");
    	}
    	catch(e){
    		alert(e);
    		return false;
    	}
    }
    Le problème est que quand j'ai des '\n' dans les valeurs des champs xml, ils sont supprimés.

    Par exemple j'ai la chaine xml suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var xmlstr = <clients>
    <row name="test" description="bonjour,\n
    je souhaiterai obtenir des informations sur votre produit" />
    </clients>
    Et bien en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    var xml = loadXmlfromString(xmlstr);
    var NodeList = xml.getElementsByTagName("row");
    alert(NodeList[0].getAttribute('description');
    Le '\n' entre 'bonjour,' et 'je' a disparu ...

    Est ce que quelqu'un aurait une idée de comment résoudre le problème ?
    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    comment pourrait-on deviner ce que fait ta fonction parseFromString???

  3. #3
    Membre actif Avatar de AurelBUD
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    202
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mai 2004
    Messages : 202
    Points : 212
    Points
    212
    Par défaut
    Bah c'est une fonction de la classe DOMParser et ce n'est pas moi qui ai écrit cette classe, elle est intégrée à mozilla.

  4. #4
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814
    Par défaut
    Vois tu un retour en ligne :

  5. #5
    Membre actif Avatar de AurelBUD
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    202
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mai 2004
    Messages : 202
    Points : 212
    Points
    212
    Par défaut
    Je ne vois pas tres bien le sens de ta question ...

    En gros dans ma base pas de souci j'ai bien le retour à la ligne et apres la parser je ne l'ai plus.

  6. #6
    Membre confirmé
    Avatar de FMaz
    Inscrit en
    Mars 2005
    Messages
    643
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 643
    Points : 640
    Points
    640
    Par défaut
    le problème c'est que tu vois plus \n ou que ce dernier à été remplacé par un saut de ligne dans la source de la page ?

    Si le problème est que le \n à été remplacé trop tot, met \\n. De cette facon ton alert() va l'afficher correctement, mais j'ai des doutes pour le reste.

  7. #7
    Membre actif Avatar de AurelBUD
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    202
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mai 2004
    Messages : 202
    Points : 212
    Points
    212
    Par défaut
    Quand je fais un alert sur mon xmlstr -> pas de problème le saut de ligne est bien présent.

    Par contre dans le alert(NodeList[0].getAttribute('description'); il n'est plus présent.

    Et le problème est que dans le cas j'ai mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var xmlstr = <clients>
    <row name="test" description="bonjour,\n
    je souhaiterai obtenir des informations sur votre produit" />
    </clients>
    comme exemple, mais cette chaine provient d'une base de données via SOAP -> cette chaine n'est donc pas modifiable.

  8. #8
    Membre confirmé
    Avatar de FMaz
    Inscrit en
    Mars 2005
    Messages
    643
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 643
    Points : 640
    Points
    640
    Par défaut
    C'est normal que le saut de ligne n'Est plus présent dans ton alert, il a été converti de \n à un saut de ligne qui est maintenant un saut de ligne dans la source.

    Quand tu fait ton message, il n'y a dont aucun \n puisqu'il est devenu un saut de ligne.

    Et tu n'a qu'a faire un replace sur ta variable, pas besoin de modifier à la source.

  9. #9
    Membre actif Avatar de AurelBUD
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    202
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mai 2004
    Messages : 202
    Points : 212
    Points
    212
    Par défaut
    Citation Envoyé par FMaz
    C'est normal que le saut de ligne n'Est plus présent dans ton alert, il a été converti de \n à un saut de ligne qui est maintenant un saut de ligne dans la source.

    Quand tu fait ton message, il n'y a dont aucun \n puisqu'il est devenu un saut de ligne.

    Et tu n'a qu'a faire un replace sur ta variable, pas besoin de modifier à la source.
    Oui ça je sais ... c'est ce que je t'ai dit ... avant de parser ca m'affiche le saut de ligne (et donc pas le \n) mais après je n'ai plus de saut de ligne.

    Merci de poster des messages inutiles ...

  10. #10
    Membre confirmé
    Avatar de FMaz
    Inscrit en
    Mars 2005
    Messages
    643
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 643
    Points : 640
    Points
    640
    Par défaut
    Citation Envoyé par FMaz
    C'est normal que le saut de ligne n'Est plus présent dans ton alert, il a été converti de \n à un saut de ligne qui est maintenant un saut de ligne dans la source.

    Quand tu fait ton message, il n'y a dont aucun \n puisqu'il est devenu un saut de ligne.

    Et tu n'a qu'a faire un replace sur ta variable, pas besoin de modifier à la source.
    Autrement dit, tu fait:

    alert("123123123
    blablabla");

    et non pas
    alert("123123123\n
    blablabla");

    ni
    alert("123123123\nblablabla");

    mais bien:
    alert("123123123blablabla");


    Tu peux effectuer un remplacement de caractère pour ajouter à nouveau un CARACTÈRE de saut de ligne (\n) la place des saut de ligne déjà interprété.

  11. #11
    Membre actif Avatar de AurelBUD
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    202
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mai 2004
    Messages : 202
    Points : 212
    Points
    212
    Par défaut
    FMaz je crois que tu ne comprends pas du tout mon problème ...

  12. #12
    Membre confirmé
    Avatar de FMaz
    Inscrit en
    Mars 2005
    Messages
    643
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 643
    Points : 640
    Points
    640
    Par défaut
    ré-explique, moi je te dis de faire un remplacement des saut de lignes par les caractère \n et toi tu me dit que tu peux pas changer la source, aucun rapport avec la source, les variables c'est pas pour rien.

    Ou alors j'ai vraiment rien pigé, mais je suis pas plus con qu'un autre...

  13. #13
    Membre actif Avatar de AurelBUD
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    202
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mai 2004
    Messages : 202
    Points : 212
    Points
    212
    Par défaut
    Donc je reprend depuis le debut :
    - je recupere des données dans une base MySQL grâce à PHP
    - je transmet ces données à javascript via le protocole SOAP (à ce moment là les données sont au format XML)
    - je recupere ces données et je parse le xml pour séparer mes champs.

    Donc les données que je récupère via SOAP sont une chaine de caractere au format xml du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <clients>
    <row name="test" description="bonjour,
    je souhaiterai obtenir des informations sur votre produit" />
    </clients>
    Avec un saut de ligne entre 'bonjour,' et 'je'.

    Quand je fais un alert sur cette chaine -> le saut de ligne apparait bien.

    Puis j'utilise les fonctions définies préceddement pour parser ma chaine XML :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var xml = loadXmlfromString(xmlstr);
    var NodeList = xml.getElementsByTagName("row");
    alert(NodeList[0].getAttribute('description');
    Et lors du alert(NodeList ...), j'ai bien la chaine voulue mais sans le saut de ligne entre le 'bonjour,' et le 'je' ...

    Où est donc passé ce saut de ligne ???

  14. #14
    Membre confirmé
    Avatar de FMaz
    Inscrit en
    Mars 2005
    Messages
    643
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 643
    Points : 640
    Points
    640
    Par défaut
    Quand je fais un alert sur cette chaine -> le saut de ligne apparait bien.
    Quelle est la variable que tu affiche dans ton alert() ?

  15. #15
    Membre actif Avatar de AurelBUD
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    202
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mai 2004
    Messages : 202
    Points : 212
    Points
    212
    Par défaut
    Citation Envoyé par FMaz
    Quand je fais un alert sur cette chaine -> le saut de ligne apparait bien.
    Quelle est la variable que tu affiche dans ton alert() ?
    xmlstr

  16. #16
    Membre confirmé
    Avatar de FMaz
    Inscrit en
    Mars 2005
    Messages
    643
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 643
    Points : 640
    Points
    640
    Par défaut
    et si tu met (juste après ton alerte):
    xmlstr.replace("\n","\\n");

    ??

  17. #17
    Membre actif Avatar de AurelBUD
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    202
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mai 2004
    Messages : 202
    Points : 212
    Points
    212
    Par défaut
    Bah au dernier alert je n'obtient pas de saut de ligne mais l'affichage d'un '\n'

  18. #18
    Membre confirmé
    Avatar de FMaz
    Inscrit en
    Mars 2005
    Messages
    643
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 643
    Points : 640
    Points
    640
    Par défaut
    hum, donc, pour la dernière alerte, on est passé de:

    "bonjour, je souhaiterai obtenir des informations sur votre produit"
    à
    "bonjour,\nje souhaiterai obtenir des informations sur votre produit"

    ??

  19. #19
    Membre actif Avatar de AurelBUD
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    202
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mai 2004
    Messages : 202
    Points : 212
    Points
    212
    Par défaut
    Ouep

  20. #20
    Membre confirmé
    Avatar de FMaz
    Inscrit en
    Mars 2005
    Messages
    643
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 643
    Points : 640
    Points
    640
    Par défaut
    Ca c'est trop étrange.

    Remplace:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(NodeList[0].getAttribute('description'));
    Par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var tmpstr1=NodeList[0].getAttribute('description');
    var tmpstr2=tmpstr1;
    tmpstr2.replace("\n";"\\n");
    document.write(tmpstr1+"\n--------\n"+tmpstr2);
    Je comprend pas comment un espace peut-être innexistant, puis être remplacé ensuite s'il n'existait pas avant :-\

    Copie-colle-moi le résultat.
    Ps.: J'espère que mon code de débuggage est bon ;p

Discussions similaires

  1. Tabulations : problème de retour à la ligne
    Par Mattius007 dans le forum Mise en forme
    Réponses: 3
    Dernier message: 05/06/2007, 17h36
  2. [utilitaire bcp]problème avec retour à la ligne
    Par m-mas dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 24/05/2007, 15h10
  3. Réponses: 1
    Dernier message: 07/04/2007, 22h21
  4. problème de retour à la ligne
    Par frol dans le forum Mise en page CSS
    Réponses: 7
    Dernier message: 02/12/2006, 14h35
  5. [MySQL] problème de retour à la ligne.
    Par NPortmann dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 29/09/2005, 14h43

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