Problème de lecture d'un XML distant

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • Problème de lecture d'un XML distant

    Hello,
    J!'implémente une nouvelle fonction de check des mises à jour dispo pour mon composant. (à la JCE) ...
    Je suis parti sur la comparaison de versions du XML distant (mon server) et du XML du site hébergeant le composant.
    Cependant le 'loadFile()' ne semble pas fonctionner. Et pas trouvé de posts sur le sujet.
    L'url est valide et la chmod file ok.
    Code PHP:
        function updates()
            {
      
    $url ='http://www.protolbv.fr/jbreeding/administrator/components/com_jbreedm/jbreedm.xml';
      if(
    is_file($url)) {
             
    jimport('joomla.utilities.simplexml');
             
    $xml = new JSimpleXML();
                
    $xml->loadFile($url);
                return 
    $xml->document->version[0]->data() ;
       }
            } 
    Aucune erreur d'exécution, mais le return, ... ben il return rien en fait...
    Que manque t'il pour que ça fonctionne ???
    Dernière édition par liubov à 15/09/2011, 12h06 Raison: ortho
    Developper of JBreeding Manager: http://www.jbreeding.fr/
    J-cook Referral : Service Générateur d'Extensions pour Joomla

  • #2
    Re : Problème de lecture d'un XML distant

    Salut,

    Bien que la doc dise le contraire, je n'ai jamais réussi à faire fonctionner is_file en http. Il vaut mieux utiliser f_open.

    Tu peux essayer quelque chose du genre :

    Code PHP:
    $url 'http://www.protolbv.fr/jbreeding/administrator/components/com_jbreedm/jbreedm.xml';

    if (
    fopen($url"r")) {  // vérifie que ton fichier existe
    $file file_get_contents($url);  // récupère le contenu du fichier
    $flux = new SimpleXMLElement($file); // fait mumuse avec le xml 
    return $flux->document->version[0]->data() ; 

    } else {
    echo 
    'le fichier n'existe pas';

    Commentaire


    • #3
      Re : Problème de lecture d'un XML distant

      Salut

      Perso, je fais cela dans AllEvents.

      Si je regarde rapido comment j'ai fait, cela ressemble à ceci :

      Code PHP:
      $url 'http://www.protolbv.fr/jbreeding/administrator/components/com_jbreedm/jbreedm.xml'
      if  (
      in_array  ('curl'get_loaded_extensions())) {

         
      $ch curl_init();                           // Initialize a CURL session.
         
      curl_setopt($chCURLOPT_URL$url);         // Pass URL as parameter.
         
      curl_setopt($chCURLOPT_RETURNTRANSFER1); // Return Page contents.
         
      curl_setopt($chCURLOPT_CONNECTTIMEOUT2);
         
      curl_setopt($chCURLOPT_TIMEOUT2);
         
      curl_setopt($chCURLOPT_HTTP_VERSIONCURL_HTTP_VERSION_1_1);
         
      curl_setopt($chCURLOPT_VERBOSEtrue);

         try {                
            
      $sXMLcurl_exec($ch);                  // grab URL and pass it to the variable.
          
      } catch (Exception $e) {

          }

          
      curl_close($ch);                             // close curl resource, and free up system resources.


      Le résultat de ce code résulte dans la variable $sXML que j'ai donc initialisé avec le code XML du fichier distant.

      Reste plus qu'à le traiter; voici le début.

      Code PHP:
      $xml_element = new SimpleXMLElement($sXML); 
      Si cela t'intéresse, dans AllEvents, la fonction de contrôle est située dans le fichier /components/com_allevents/class/utils.php et la fonctionne se nomme getVersionsTable().
      Christophe (cavo789)
      Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
      Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

      Commentaire


      • #4
        Re : Problème de lecture d'un XML distant

        Merci Cavo !
        J'étais tombé sur un post avec le CURL ... mais il me manquait la fin du traitement, je m'en suis pas sorti ...

        Merci Kursus !
        ça parait simple et robuste! effectivement, c'est pas le return qui retourne rien, c'est le is_file qui retourne 'false' !

        remerciements à ts les 2 pour vos soluces détaillées ... tests en cours.

        Marc.
        Developper of JBreeding Manager: http://www.jbreeding.fr/
        J-cook Referral : Service Générateur d'Extensions pour Joomla

        Commentaire


        • #5
          Re : Problème de lecture d'un XML distant

          Hello,
          oui, curl ou fopen sont les bons choix ... mais ... y a un mais

          Le soucis est que selon les serveurs , c'est des fois l'une ou l'autre des fonctions qui est installé ... Aie !!!!
          Donc si ce besoin est pour un compo a distribuer (AllEvents ), il est preferable d'implementer les 2 fonctions pour ne pas avoir des plantages chez certains utilisateurs !


          Choix 1) : on decide de mettre en param le choix de la methode curl ou fopen. C'est l'integrateur qui regle ce paramêtre.
          c'est cette facon de faire que l'on retrouve notamment dans le AFUJ_Update_manager pour J!1.5


          Choix 2) : on teste dans le code si la methode existe sinon on utilise l'autre !


          Dans tous les cas je vous conseille de coder les 2 solutions

          Bon code !
          Garstud Workshop - Concepteur, Développeur et Formateur Joomla - http://www.garstud.com
          « Ce n’est pas parce que les choses sont difficiles que nous n’osons pas,
          c’est parce que nous n’osons pas qu’elles sont difficiles. »
          - Sénèque

          Commentaire


          • #6
            Re : Problème de lecture d'un XML distant

            Insdustrialiser des solutions stables, ça me va bien!

            Tu donnes en plus une réponse à un pb qui me prend le chou depuis 2 jours, car comme tu dis, sur un environnement(ovh, Free) le CURL fonctionne, sur un autre non (Oxito), et je comprends pas ... ça patine !
            Je vais jetter un groS Oeil sur AFUJ UPGRADE...

            Merci Garstud pour tes compléments, et pour moi, c'est pour J! Breeding Manager qui évolue vite, donc besoin d'automatiser l'upgrade.

            Marc.
            Developper of JBreeding Manager: http://www.jbreeding.fr/
            J-cook Referral : Service Générateur d'Extensions pour Joomla

            Commentaire


            • #7
              Re : Problème de lecture d'un XML distant

              bonjour,
              moi mon cas, c'est presque le même que vous, juste moi pour pouvoir accéder au fichier xml qui se trouve dans l'adresse, faut que j'accompagne ça avec une chaine xml pour inclure mes information d'authentification comme l'identifiant de partenaire,
              mais comment puis je faire ça, est ce que je peux faire ça en concaténant l'adresse de flux xml avec la chaine xml séparé par point d'interrogation comme suit:
              <http://adresse_flux.com/?xml=<?xml version="1.0" encoding="UTF-8"?>
              <REQUETE>
              ........
              </REQUETE>,
              mais comment procéder à ça avec une fonction ?
              merci à l'avance

              Commentaire

              Annonce

              Réduire
              Aucune annonce pour le moment.

              Partenaire de l'association

              Réduire

              Hébergeur Web PlanetHoster
              Travaille ...
              X