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

Bibliothèques et frameworks PHP Discussion :

[XML] [EXPAT] Comment mettre a dispo du XML


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre expérimenté
    Avatar de Harry
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2002
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 224
    Points : 1 331
    Points
    1 331
    Par défaut [XML] [EXPAT] Comment mettre a dispo du XML
    Bonjour,

    J'aimerais mettre à disposition des données issus de recherches complexes sous forme de XML.

    Aujourd'hui j'ai fait une page PHP qui est appelé avec des variables en GET et qui crée et renvoie du XML avec des echo (qui s'affiche l'XML si on appelle l'url dans un browser).

    Mais les prestataires avec lesquelles je travaillent semblent avoir le plus grand mal à récupérer le XML. Pour parser le contenu pas de soucis je leur ai dégoté un joli tuto sur developpez. Mais pour passer le contenu du résultat de ma page dans une variable sur leur page je n'ai rien trouvé.
    Je me pose des questions sur cette technique, ai-je bien fait de faire un simple echo du XML ?

    Connaissez vous un tutorial sur la récupération de contenu XML renvoyé par une page (ou comment récupérer le XML (contenu de la page) que je leur renvoie) ?

    Merci

  2. #2
    Membre éprouvé
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Points : 1 063
    Points
    1 063
    Par défaut
    si je comprend tu a une url du genre : http://www.monsite.fr/essai.xml et tu veux savoir comment il peuvent récupérer le fichire essai.xml?

  3. #3
    Membre expérimenté
    Avatar de Harry
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2002
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 224
    Points : 1 331
    Points
    1 331
    Par défaut
    Non, plustôt http://www.monsite/recherche.php?Tru...bidule=X19YYTR

    Et comment récup le XML.

    J'ai commencé à faire mon propre exemple vu que je n'en ai pas trouvé.

    Par contre je bloque sur un pb ou l'affichage est très lent et à la fin c'est comme si les variables (les print_r ne renvoien rien.) étaient vides. Voici l'exemple tel qu'il est en ce moment :
    Code php : 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    <?php
     
    $url = "http://www.aucomptoirdesvacances.com/php/xml.desc.php?&refAgence=061810001&nolot=L0010001";
     
    function lit_rss($fichier,$objets) {
     
    	// on lit tout le fichier
    	if($chaine = @implode("",@file($fichier))) {
    		print_r($chaine);
    		// on découpe la chaine obtenue en items
    		$tmp = preg_split("/<\/?"."item".">/",$chaine);
     
    		// pour chaque item
    		for($i=1;$i<sizeof($tmp)-1;$i+=2)
     
    			// on lit chaque objet de l'item
    			foreach($objets as $objet) {
     
    				// on découpe la chaine pour obtenir le contenu de l'objet
    				$tmp2 = preg_split("/<\/?".$objet.">/",$tmp[$i]);
     
    				// on ajoute le contenu de l'objet au tableau resultat
    				$resultat[$i-1][] = @$tmp2[1];
    			}
     
    		// on retourne le tableau resultat
    		return $resultat;
    	}
    }
    echo
    '
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>Exemple</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
    <body bgcolor="90EE90">';
     
     
    $variables = array("NO_LOT", "REF_LOT", "PHOTO1");//spécifier tout les champs en 1 coup pour meilleurs perfs
    $rss = lit_rss($url,$variables);
     
     
    print_r($rss);
    foreach($rss as $tab)
    {
    	echo 'Numéro du lot : '.$tab[0];
    }
     
    echo '</body></html>';


    J'ai mis un vrai lien dedans
    Bon, là il faut que j'y aille.

    Je finirais lundi. Si vous voyez pourquoi ma page n'affiche que la couleur et le texte en dur dites le moi.

    Merci

  4. #4
    Membre expérimenté
    Avatar de Harry
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2002
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 224
    Points : 1 331
    Points
    1 331
    Par défaut
    ReBonjour,

    Voila WE terminé et je m'y remets.

    Appareamment le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if($chaine = @implode("",@file($fichier)))
    ne passe pas ! Humpf, peut être que cette technique ne prends que les vrais fichiers ?

    Edit j'ai bien réussi à parser après quelques modifs et en utilisant un fichier, par contre dès que je veux appeler l'URL à la place du chemin du fichier ça ne marche pas. (long blocage et pour finir rien ne sort du 'file()').

    Mon problème semble juste être un pb de récupération de contenu de page.

    Merci

  5. #5
    Membre expérimenté
    Avatar de Harry
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2002
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 224
    Points : 1 331
    Points
    1 331
    Par défaut
    J'ai du nouveau, le problème change, mon code (actuellement avec un file_get_contents) fonctionne à la perfection... à partir d'un PC avec easyPHP, en fait c'est juste depuis mon serveur d'hebergement que ça ne fonctionne pas ! Même en appelant d'autres pages/sites.

    Ce problème est-il courant ? Je suppose que si j'ai buté la dessus les autres webmasters qui voudront utiliser mes XML vont peut être avoir le même problème ! Savez vous quel paramètre peut causer le souci sur le serveur ?

    Merci,

    Harry

  6. #6
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Salut,

    ce n'est a priori pas un problème spécifiquement lié à XML. Sur ton serveur d'hébergement la possibilité d'ouvrir des flux de type fichier directement à partir d'une URL a dû être désactivée. Si tu a accès au php.ini, tu en auras la confirmation si tu y trouves cette ligne :

  7. #7
    Membre expérimenté
    Avatar de Harry
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2002
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 224
    Points : 1 331
    Points
    1 331
    Par défaut
    Citation Envoyé par GrandFather
    Salut,

    ce n'est a priori pas un problème spécifiquement lié à XML. Sur ton serveur d'hébergement la possibilité d'ouvrir des flux de type fichier directement à partir d'une URL a dû être désactivée. Si tu a accès au php.ini, tu en auras la confirmation si tu y trouves cette ligne :

    Très bonne idée, j'ai fait un phpinfo mais c'est sur 'On' donc ca dois venir d'autre chose.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 83
    Points : 100
    Points
    100
    Par défaut lenteur du réseau
    Salut,

    Pour lire le fichier, tu peux utiliser un squelette du type ::

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	if(!$fp = @fopen($this->feedURL, 'r')) {
    		return false;
    	}	
    	while (!feof($fp)) {
    		$this->feedContent .= fread($fp, 4096);
    	}
    	fclose($fp);

    ou si cela ne marche pas passer par la bibliothèque curl ::

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $ch = curl_init($this->feedURL);
    	// curl_setopt($ch, CURLOPT_URL, $filename);
    	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
     
    	$this->feedContent = curl_exec ($ch);
    	curl_close ($ch);

    C'est un code que j'ai repris(Merci à l'auteur) qui de mémoire viens d'un exemple lecteur de flux R.S.S. en P.H.P. nommé fil_le.rss_read.v21b.zip.


    Ence qui concerne la lenteur, pour ma part, si le délai est raisonnable( <10s ), je pense que ça vient juste de la lenteur du réseau.

    Si tu n'a pas de contraintes de temps sur l'éxécution, je pense juste que ça marche et que
    le mieux est l'ennemi du bien
    .

    Xavier

Discussions similaires

  1. [XML] msxml Comment mettre les premières lignes ?
    Par eponette dans le forum API, COM et SDKs
    Réponses: 0
    Dernier message: 06/12/2007, 17h09
  2. [XML] Comment mettre des commentaires ?
    Par fredhali2000 dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 10/08/2006, 11h32
  3. [DOM XML] Comment mettre l'encoding
    Par meda dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 17/07/2006, 21h23
  4. Comment mettre plusieurs objets ds un composant ?
    Par Fleury dans le forum Composants VCL
    Réponses: 7
    Dernier message: 24/05/2003, 17h34

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