begin process at 2012 05 28 12:03:19
  Trouver un code source :
 
dans
 
Accueil > Forum > 

ASP.NET

 > 

Divers

 > 

Autre

 > 

Récupérer données XML avec caractère illégal


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

Récupérer données XML avec caractère illégal

samedi 16 février 2008 à 23:48:48 | Récupérer données XML avec caractère illégal

fabienfs

Membre Club Administrateur CodeS-SourceS
Bonsoir,

J'ai un programme qui me génère un fichier XML avec des titres de musiques diffusées.
Le problème est que ce programme me génère mon fichier XML avec des titres de chansons comportant des caractères illégaux. Exemple l'éperluette "&" qui est considéré comme illégal dans un fichier XML.
 La solution pour ce problème était donc de mettre le titre de la chanson entre des balises <![CDATA[.

En gros j'avais donc fait :
<Musique><![CDATA[ Madonna & Test ]]></Musique>

Plus de problème jusque là, mais ensuite quand je veux récupérer ce résultat avec mon code en ASP.net/VB.net, il ne m'affiche plus rien à cause des balises CDATA

Ma question est donc : Comment récupérer le titre de la chansson entre mes balises <Musique> sans avoir ce problème de caractère illégal quand un titre comporte un "&" ? Je peux modifier le fichier XML mais je ne peux pas changer les titres comportant des caractères illégaux car c'est un programme indépendant qui génère les titres...

Voici mon code ASP.net :

       Dim reader As XmlTextReader
        Dim i AsInteger
        Dim builder As System.Text.StringBuilder = New System.Text.StringBuilder(1024)
        Dim NombreElements AsInteger = 0
        Try
            reader = New XmlTextReader(Server.MapPath("musiques.xml"))
            While reader.Read()
                SelectCase reader.NodeType
                    Case XmlNodeType.Element
                        If reader.HasAttributes Then
                            For i = 0 To reader.AttributeCount - 1
                                Response.Write(reader.GetAttribute(i))
                            Next
                            Response.Write("<br />")
                        EndIf
                    Case XmlNodeType.Text
                       litNow.Text = Server.HtmlEncode(reader.Value)
                        EndIf
                EndSelect
            EndWhile
        Catch ex As Exception
            Response.Write("Erreur " & ex.Message)
        Finally
            reader.Close()
        EndTry

Merci.

A++


Fabien Schenkels (alias fabienfs)
dimanche 17 février 2008 à 00:37:34 | Re : Récupérer données XML avec caractère illégal

coq

Administrateur CodeS-SourceS

Salut,

Heu, quel est la portion du code censée lire le contenu de l'élément là dedans ?
Musique n'a pas d'attribut, et ne contient pas de noeud de type texte.


/*
coq
MVP Visual C#
CoqBlog
*/

dimanche 17 février 2008 à 00:48:43 | Re : Récupérer données XML avec caractère illégal

fabienfs

Membre Club Administrateur CodeS-SourceS
Hum, bonne question :)
A vrai dire, j'ai du mal pour lire de l'xml avec asp.net donc j'ai récupéré vite fait un code sur le site que j'ai essayer au plus simple de faire fonctionner...

Techniquement, je devrais tout recommencer pour avoir plus simple ?

A++


Fabien Schenkels (alias fabienfs)
dimanche 17 février 2008 à 01:06:29 | Re : Récupérer données XML avec caractère illégal

coq

Administrateur CodeS-SourceS
Ca dépend de ce que tu veux faire au juste, je n'arrive pas à saisir le sens final du code là ?



/*
coq
MVP Visual C#
CoqBlog
*/
dimanche 17 février 2008 à 01:10:29 | Re : Récupérer données XML avec caractère illégal

fabienfs

Membre Club Administrateur CodeS-SourceS
En gros, j'ai un fichier xml avec les 10 derniers sons joués, et je veux afficher dans ma page ces 10 derniers sons joués sous forme :

<li>Dernier son joué</li>
<li>Denier son joué 2</li>
<li>Denier son joué 3</li>
<li>Dernier son joué 4</li>
...

En cherchant un peu, peut-être qu'un code du genre serait plus adapté : ?
Dim RootNode as XmlElement = XMLdoc.DocumentElement
Response.Write (RootNode.Attributes("Musique").Value)


A++


Fabien Schenkels (alias fabienfs)
dimanche 17 février 2008 à 01:25:34 | Re : Récupérer données XML avec caractère illégal

fabienfs

Membre Club Administrateur CodeS-SourceS
Je peux faire comme ceci aussi

Dim builder As System.Text.StringBuilder = New System.Text.StringBuilder(1024)
Dim XMLdoc As XmlDocument = New XmlDocument()
XMLdoc.Load(Server.MapPath(
"musiques.xml"))
Dim RootNode As XmlElement = XMLdoc.DocumentElement
Dim nodeList As XmlNodeList = RootNode.GetElementsByTagName("Musique")
Dim i AsInteger
For i = 0 To nodeList.Count - 1
builder.Append("<li>")
builder.Append(nodeList.Item(i).InnerXml)
builder.Append(
"</li>")
Next i
XMLdoc = Nothing
Response.Write(builder)

Mais le problème reste le même, mais le code est déjà plus propre.

A++


Fabien Schenkels (alias fabienfs)
dimanche 17 février 2008 à 01:53:26 | Re : Récupérer données XML avec caractère illégal

coq

Administrateur CodeS-SourceS
Réponse acceptée !
Pour ta transformation, XSLT est probablement plus adapté.

Concernant CDATA, il s'agit d'un élément fils de l'élément Musique, donc basiquement, juste pour rendre "fonctionnel" ton exemple :

builder.Append(nodeList.Item(i).InnerXml)
=> builder.Append(nodeList.Item(i).FirstChild.Value)

/*
coq
MVP Visual C#
CoqBlog
*/
dimanche 17 février 2008 à 02:00:48 | Re : Récupérer données XML avec caractère illégal

fabienfs

Membre Club Administrateur CodeS-SourceS
Merci, je vais faire des recherches sur la transformation XSLT alors.

En attendant, je vais quand même mettre la solution de "secours"

Merci encore.

A++


Fabien Schenkels (alias fabienfs)


Cette discussion est classée dans : fichier, récupérer, xml, reader, illégal


Répondre à ce message

Sujets en rapport avec ce message

récupérer les paramètres d'un fichier image [ par paguem ] Comment récupérer les paramètres d'un fichier image (son poids - sa hauteur - sa largeur) afin de les utiliser comme variable.Merci d'avance! récupérer les paramètres d'un fichier image [ par paguem ] Comment récupérer les paramètres d'un fichier image (son poids - sa hauteur - sa largeur) afin de les utiliser comme variable.Merci d'avance! MSXML3 ... qui a une doc ??? [ par jimmy ] je dois utiliser le parseur MSXML3 pour créer un fichier xml à partir d'une base de données et pour extraire des données d'un fichier xml ... comment FORMULAIRE EMAIL CDONTS FICHIER JOINT [ par SylMail ] Bonjour,J'utilise CDONTS.Je suis parvenue à récupérer les données d'un formulaire et à les expédier par email (via cdonts). Je bute sur le point suiva Parser un fichier XML sur un serveur distant [ par Skyride ] Bonsoir à tousQuelqu'un pourrait t'il me renseigner sur un point particulier...Voila je vous expose mon problème, un fichier de données XML est stocké Récupérer un fichier client sur le serveur [ par Rita ] 'DNS du poste du client const FilePath = "\\W982100\rep\"Set Fs=CreateObject("Scripting.FileSystemObject")Set FFile = Fso.GetFile (Filepath & "\cop.p aller chercher un fichier .xml ?? [ par stephe12 ] Bonjour à tous. Je n'arrive pas à aller chercher un fichier .xml qui est sur un site internet pour le copier sur une page de mon site. Le tout est en xml et images [ par fraud ] farfadetbonjourje cherche comment on crée un lien à partir d'un fichier xml vers un fichier image.jpg pour faire apparaitre l'image dans une animation Comment récupérer un formulaire [ par domi1 ] Le script .asp suivant est exécuté dans le navigateur après ouverture d'un formulaire PDF, on clique sur Envoyer (Submit). Le serveur renvoie une pag Récupérer du xml dans une base de données [ par fmarie ] Je désire récupérer les données d'une page xml sur le net et faire des tris dessus. Je peux passer par une base Access mais je voudrais que ce soit au


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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,577 sec (4)

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