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

VB.NET Discussion :

Sauver une String qui doit contenir des guillemets dans un fichier XML


Sujet :

VB.NET

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2007
    Messages : 216
    Par défaut Sauver une String qui doit contenir des guillemets dans un fichier XML
    Bonjour,

    Soit la chaîne de caractères stockée dans la constante ci-dessous:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        Private Const Cst_SOURCEAPP As String = "name=" & Chr(34) & "EndNote" & Chr(34) & "version" & Chr(34) & "18.2" & Chr(34)
    rappel: Chr(34) = "

    Quelle technique utilisez-vous pour sauver une String qui doit contenir des guillemets dans un fichier XML ?

    Merci de vos lumières.
    Cordialement,

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Il y a deux façon d'indiqué un string dans un Xml ["] qui n'est pas la bonne syntaxe mais qui fonctionne et ['] qui pour le coup est la bonne.
    Private Const Cst_SOURCEAPP As String = "name='" & Chr(34) & "EndNote" & Chr(34) & "version" & Chr(34) & "18.2" & Chr(34) & "'"

  3. #3
    Expert confirmé

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 761
    Billets dans le blog
    21
    Par défaut
    2 variantes, en fonction de comment est stockée la chaîne :
    • en tant qu'élément (<text>Ceci est un "Hello World"</text>) : aucune précaution à prendre ;
    • en tant qu'attribut (<text value="Ceci est un &quot;Hello World@quot;" />) : il faut impérativement échapé les " en les remplaçant par & quot;


    L'autre méthode, qui consiste à utiliser des apostrophes au lieu de guillemet est à éviter en général. Cela ne fait que déporter le problème en rendant impossible l'utilisation de... l'apostrophe. Et donc si une chaîne contient à la fois des guillemets et des apostrophes, elle est inutilisable.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2007
    Messages : 216
    Par défaut
    Merci de vos réponses Messieurs. En fait, j'ai trouvé. Ce sont des attributs xml qui sont entre guillemets. Donc je travaille avec la méthode "WriteAttributeString" du XmlWriter.

    Super, la citation de Prévert! Qu'est-ce que ça fait du bien un peu de poésie dans ce monde...

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour Paul,
    Si tu apprécie alors j'apprécie doublement.

  6. #6
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Citation Envoyé par Paul Van Walleghem Voir le message
    Bonjour,

    Soit la chaîne de caractères stockée dans la constante ci-dessous:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        Private Const Cst_SOURCEAPP As String = "name=" & Chr(34) & "EndNote" & Chr(34) & "version" & Chr(34) & "18.2" & Chr(34)
    rappel: Chr(34) = "

    Quelle technique utilisez-vous pour sauver une String qui doit contenir des guillemets dans un fichier XML ?

    Merci de vos lumières.
    Cordialement,
    Attention, la réponse fournie avec usage des simples quotes ne donne pas exactement la même chaîne que celle fournie par la ligne de code que tu soumets. Note que c'est peut-être mieux pour XML mais là, je ne confirme pas ...
    Voici pour comparaison, le test à faire (vérifiable par affichage dans une MessageBox, par exemple) :

    Ta chaîne de départ :
    Private Const Cst_SOURCEAPP_1 As String = "name=" & Chr(34) & "EndNote" & Chr(34) & "version" & Chr(34) & "18.2" & Chr(34)
    Affichage : name="EndNote"version"18.2"

    Le doublement des guillemets internes (ce qui est la méthode DotNet d'insertion de guillements dans une chaîne) :
    Private Const Cst_SOURCEAPP_2 As String = "name=""EndNote""version""18.2"""
    Affichage : name="EndNote"version"18.2"

    L'usage des simples quotes :
    Private Const Cst_SOURCEAPP_3 As String = "name='" & Chr(34) & "EndNote" & Chr(34) & "version" & Chr(34) & "18.2" & Chr(34) & "'" '
    Affichage : name='"EndNote"version"18.2"'

    :-)

  7. #7
    Membre Expert
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Par défaut
    Citation Envoyé par Paul Van Walleghem Voir le message
    Quelle technique utilisez-vous pour sauver une String qui doit contenir des guillemets dans un fichier XML ?
    Personnellement dès que je vois VB.Net + manipulation XML je commence à réfléchir XML Literals ; après faut voir si ça peut s'appliquer au contexte en question ; mais si ça va ; on peut très bien avoir directement le xml dans le code ou juste insérer les expressions voulues dans le xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Const foo = "name=""EndNote""version""18.2"""
    Dim test =
        <root>
            <test1>name="EndNote"version"18.2"</test1>
            <test2><%= foo %></test2>
        </root>

  8. #8
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Citation Envoyé par Sehnsucht Voir le message
    Personnellement dès que je vois VB.Net + manipulation XML je commence à réfléchir XML Literals ; après faut voir si ça peut s'appliquer au contexte en question ; mais si ça va ; on peut très bien avoir directement le xml dans le code ou juste insérer les expressions voulues dans le xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Const foo = "name=""EndNote""version""18.2"""
    Dim test =
        <root>
            <test1>name="EndNote"version"18.2"</test1>
            <test2><%= foo %></test2>
        </root>
    Pour mon information cette fois ...
    Si je lis bien ton code (avec la constante foo), ton code initial avec les chr(34) ou le mien avec le doublement des guillemets, est plus approprié que celui avec les simples quotes ?

    Cordialement,

    :-)

  9. #9
    Membre Expert
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Par défaut
    Je me suis pas vraiment posé la question, si c'est dans la partie "texte" (entre les balises ou en balise CDATA) c'est juste du texte y'a pas l'air d'y avoir de préférence à avoir, point de vue XML c'est pas son souci.
    Maintenant s'il s'agit d'un attribut, côté code y'a pas à se prendre la tête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Console.WriteLine(<tag attr='va"l"ue'/>)
    Affichera
    <tag attr="va&quot;l&quot;ue" />
    Autrement dit c'est échappé tout seul correctement ; et on peut aussi également directement échapper les trucs si on veut (genre s'il faut mixer apostrophe et guillemet)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Console.WriteLine(<tag attr='va&apos;l"ue'/>)
    Affichera
    <tag attr="va'l&quot;ue" />

  10. #10
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    OK. Merci pour l'explication.
    Bonne nuit ...

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

Discussions similaires

  1. écrire des guillemets dans un fichier
    Par K2000 dans le forum Débuter
    Réponses: 2
    Dernier message: 23/04/2010, 12h24
  2. rassembler des ressources dans ub fichier xml/html
    Par cbonnard dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 09/01/2006, 17h18
  3. Réponses: 1
    Dernier message: 22/12/2005, 15h45
  4. [XML] stocker des données dans un fichier XML
    Par R3iTt0R dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 27/05/2005, 16h51
  5. [debutant] preservation des espace dans un fichier xml
    Par Eric B dans le forum XML/XSL et SOAP
    Réponses: 7
    Dernier message: 03/09/2003, 09h43

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