XML Parser

Bonjour,


 


J'interroge un newsfeed en XML qui fonctionne bien. Le propriétaire du site à  mis un nouveau newsfeed sur un serveur de test. Depuis je ne reçois que le premier item ?


 


En posant ma requête avec VisualXML (un petit utilitaire trouvé sur le macStore), je ne vois aussi que le premier. Par contre Shrook (un autre utilitaire) trouve bien tous les items.


 


Je dois donc rencontré un problème quelle part mais je n'ai pas de piste.


 


Les entêtes des deux fichiers XML sont les mêmes et leur structure très avoisinante en ce qui concerne ce que je dois parser.


 


Une idée ? o:)


Mots clés:

Réponses

  • CéroceCéroce Membre, Modérateur
    octobre 2016 modifié #2

    Est-ce que le XML est toujours valide par rapport à  son schéma ? (XLD)


    Est-ce que le parseur renvoie une erreur ?


     


    (Ouais, moi je suis comme ça, avant de mettre en cause mon code, je mets en cause les données envoyées par le serveur  >:D ).


  • Je pense qu'effectivement cela provient du serveur...


     


    Avec Shrook (l'utilitaire qui arrive à  lire le flux XML) je peux visualiser la source au format text.Si je la copie colle dans TextWrangler et que je l'enregistre en .XML


     


    Pour le serveur en production je retrouve bien dans mon finder un fichier XML avec un aperçu correct. Par contre pour le serveur test je me retrouve avec un fichier de type document sans aperçu


  • iLandesiLandes Membre
    octobre 2016 modifié #4

    Le serveur ne sembla pas renvoyer toutes les données mais l'application Shrook parvient bien à  toutes les recevoir.


     


    Peut-être a-t-il quelque chose pour relancer ou forcer la requête à  aller au bout ?


     


    Google Chrome arrive aussi très bien à  télécharger le fichier XML


  • iLandesiLandes Membre
    octobre 2016 modifié #5

    Voilà  j'ai identifié la ligne qui pose problème elle est du type :



    <rawvoise:poster url="http://test.server.com/Photos/black&white.png" />

    C'est le caractère & qui pose l'arrêt du parser. Je vais pouvoir le modifier côté serveur ce qui va résoudre mon problème.


     


    Dans la string il faudrait une ligne remplacer & par &amp;



    <rawvoise:poster url="http://test.server.com/Photos/black&amp;white.png" />

    Par contre exist-t-il un moyen de prévenir ce genre de cas et éviter l'arrêt du Parser XML en détectant une erreur ?


     


    On peut évidement signaler l'erreur grâce à  



    func parser(parser: NSXMLParser,parseErrorOccurred parseError: NSError)

    Mais y a t il un moyen de la corriger ?


  • CéroceCéroce Membre, Modérateur
    octobre 2016 modifié #6

    Dans la string il faudrait une ligne remplacer & par &amp;

     
    Non. &amp, c'est du HTML et c'est tout. Rien à  voir avec le XML.

    Solution: 
    https://en.wikipedia.org/wiki/Percent-encoding
  • Non. &amp, c'est du HTML et c'est tout. Rien à  voir avec le XML.


    En fait si on peut utiliser &amp; en XML. [url=http://www.w3.org/TR/xml/#syntax

    Le fichier renvoyé par le serveur est faux car il n'est pas valide en XML (à  cause du "&" qui devrait être "&amp;").

    Après, je ne sais pas si "&" est autorisé dans une URL quand il est utilisé avant le début de la partie query.
Connectez-vous ou Inscrivez-vous pour répondre.