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

ASP.NET Discussion :

Lecture fichier XML


Sujet :

ASP.NET

  1. #1
    Membre éclairé Avatar de blasil64
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 324
    Par défaut Lecture fichier XML
    Bonsoir à tous,
    Je cherche à lire un flux XML disponible sur le net (API d'allociné). J'ai tenté de lire le flux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    string titreFilm = "Be Bad !";
                string requete1 = string.Format("http://api.allocine..." + titreFilm);
                XmlDocument xmlAllocineSearch = new XmlDocument();
                xmlAllocineSearch.Load(requete1);
    Mais j'obtiens cette erreur au Load :
    Marque d'ordre d'octet Unicode manquante. Impossible de basculer en Unicode. asp.net
    J'ai regardé sur MSDN un peu, mais rien de concret qui aurait pu m'aider.
    Comment puis-je m'y prendre ?

    Merci d'avance pour votre aide !

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Par défaut
    tout d'abord un petit conseil technique, l'utilisation de Linq To XML est nettement plus intuitive que l'utilisation de XmlDocument/XmlElement... donc XDocument, XElement sera certainement plus aisé à manipuler.

    Ensuite, il ne s'agit pas particulièrement d'un problème de xml, dans ton cas, mais surtout un problème de codage des caractères...

    n'oublie pas que ton flux XML peut être en ASCII (ansi-string) ou en Unicode Windows-1252 ou en UTF-8, UTF-16, UTF-24 ou UTF32...
    le problème c'est qu'il n'est pas nécessaire évident que ce soit l'un ou l'autre des formats, récupère ce fichier et ouvre le avec un éditeur hexadécimal et regarde la tête du fichier.

    si tu vois une séquence de caractères formant bien une balise, sans 00 entre chaque, alors tu a des chances d'être en ASCII charset ISO-8859-1(5)
    ou en UTF-8 si tu vois des séquences étranges de 2 caractères là ou tu devrais voir des caractères accentués.
    si tu vois des séquences de caractères toutes entrecoupées de 00 tu est probablement en UTF-16... c'est déjà nettement plus rare de trouver ce format surtout sur internet, mais parfois on le trouve quand même.

    ah autre détail, les caractères comme ! sont formellement prohibé dans le codage url, il ne faut donc pas oublier de CODER ces caractères avant de demander à XmlDocument d'ouvrir le fichier distant, qu'il sache exactement quel fichier ouvrir...
    en effet, il se peut que tu lui demande d'ouvrir et qu'au lieu d'un xml il se retrouve à ouvrir le sempiternel HTTP-404, srutout que si tu lui fourni le http:// en prélude il s'attend à trouver une url parfaitement encodée.

  3. #3
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Là, tu load un XmlDocument à partir de ta requête, tu devrais pas plutôt loader un XmlDocument à partir du résultat de la requête?

  4. #4
    Membre éclairé Avatar de blasil64
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 324
    Par défaut
    Citation Envoyé par cinemania Voir le message
    le problème c'est qu'il n'est pas nécessaire évident que ce soit l'un ou l'autre des formats, récupère ce fichier et ouvre le avec un éditeur hexadécimal et regarde la tête du fichier.
    Bonsoir,
    Merci tout d'abord pour vos réponses !
    Je viens d'enregistrer la page sur mon bureau et je l'ai ouverte.
    La première ligne spécifie l'encodage en UTF-8 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?xml version="1.0" encoding="UTF-8"?>

    Je fais donc des recherche sur Linq To XML. Par contre, aurais-tu un exemple de manipulation de ce fichier avec Linq To XML (ouverture, recherche d'un noeud spécifique, ...).

    Je vais farfouiller sur le net et MSDN pendant ce temps là !

    Merci d'avance pour votre aide !

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Par défaut
    alors vu que tu as le fichier en local, utilise ton code et fait lui ouvrir cette fois le fichier en local, là où est exécuté le code pour voir comment il se comporte avec ce fichier...

    si le prélude xml n'est pas compatible avec le format effectif de fichier, le parseur xml, n'est pas content et on peut le comprendre

    comme je t'ai également expliqué il y a le problème de l'url distante...
    les caractères interdits en url doivent être encodées d'une certaine façon, pour ne pas modifier la signification de l'url.

    exemple : & est un caractère de controle en url, ainsi que +, et ces deux caractères sont autorisés dans un nom de fichier... il est primordial de les encoder pour qu'ils soient correctement compris, sinon l'url ne sera pas comprise correctement...
    + peut signifier espace, et & est le caractère de jointure de requêtes GET pour séparer les couples clés/valeurs, et n'est donc pas traité par le serveur http comme partie du nom de fichier à rechercher.

  6. #6
    Membre éclairé Avatar de blasil64
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 324
    Par défaut
    Bonsoir,
    Merci pour ta réponse !
    Alors j'ai choisi un autre titre de film pour rester dans le simple pour le moment ("Fireball", sans espace ni caractère spécial).

    J'ai tenté de lire le flux direct et j'obtiens cette erreur :
    Marque d'ordre d'octet Unicode manquante. Impossible de basculer en Unicode.
    En faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    string titreFilm = "Fireball";
                string requete1 = string.Format("http://api..." + titreFilm);
                XDocument feedXML = XDocument.Load(requete1);
    Ensuite, j'ai testé avec le fichier enregistré en local sur mon ordinateur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XDocument feedXMLLocal = XDocument.Load(@"...\search.xml");
    Cela charge bien le document dans ma variable 'feedXMLLocal'.
    Ensuite j'ai tenté de faire un petit affichage pour voir ce que cela pouvait donner mais sans résultat, la requête ne renvoie rien !

    Juste un bout de code pour un aperçu :
    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
    16
    17
    var feedAllocine = from feed in feedXMLLocal.Descendants("feed")
                                   select new
                                   {
                                       Title = feed.Element("movie").Element("title"),
                                       Realisateur = feed.Element("movie").Element("castingShort").Element("directors")
                                   };
     
                foreach (var feeds in feedAllocine)
                {
                    Label titre = new Label();
                    titre.Text = feeds.Title.ToString();
                    Master.FindControl("Content...").Controls.Add(titre);
     
                    Label realisateur = new Label();
                    realisateur.Text = feeds.Realisateur.ToString();
                    Master.FindControl("Content...").Controls.Add(realisateur);
                }
    Merci d'avance pour votre aide !

  7. #7
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Tu veux toujours pas prendre en compte ma réponse?

  8. #8
    Membre éclairé Avatar de blasil64
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 324
    Par défaut
    Citation Envoyé par lutecefalco Voir le message
    Tu veux toujours pas prendre en compte ma réponse?
    Oh oui pardon...
    J'étais parti dans ma recherche de Linq To XML, et vu que je suis en stage la journée, j'ai complètement zappé de creuser ta piste !

    En parlant de piste, je n'arrive pas réellement à comprendre ce que tu veux me faire comprendre en fait...

    Si tu pouvais m'éclairer un peu plus, je pourrais creuser ta piste !

    Merci pour votre aide !

  9. #9
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Bah qd tu fais Load("http://...") tu cherches à charger un document XML à partir de la chaine de caractères "http://..." et non à partir du contenu de la page html correspondant à cette requête

  10. #10
    Membre éclairé Avatar de blasil64
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 324
    Par défaut
    Ah oui d'accord, je vois.
    Je tente à partir de l'URL au lieu du contenu du document résultant de l'URL.

    Que me conseilles-tu dans ce cas-là ?

    Merci d'avance pour l'aide !

  11. #11
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Récupère le contenu et charge le XmlDocument avec

Discussions similaires

  1. lecture fichier XML
    Par bhahmed dans le forum C++Builder
    Réponses: 5
    Dernier message: 18/09/2006, 08h40
  2. [C#-XML] - Problème de lecture fichier XML
    Par Gloups dans le forum Windows Forms
    Réponses: 9
    Dernier message: 08/08/2006, 00h40
  3. Lecture fichier xml aux caracteres accentués
    Par LFC dans le forum Modules
    Réponses: 2
    Dernier message: 13/02/2006, 19h45
  4. Réponses: 3
    Dernier message: 09/12/2005, 17h42
  5. [SAX] Problème lecture fichier xml
    Par BernardT dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 07/07/2005, 18h11

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