Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > XML
XML Forum d'entraide sur XML avec PHP. Exemples : SimpleXML, OpenXML... Avant de poster -> FAQ XML, Cours XML et Sources XML
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/12/2006, 10h06   #1
Membre Expert
 
Avatar de Harry
 
Homme
Ingénieur développement logiciels
Inscription : juillet 2002
Messages : 1 182
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
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 182
Points : 1 079
Points : 1 079
Par défaut [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
__________________

Attention le .NET sur PDA peut causer des chutes de cheveux
Harry est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2006, 11h19   #2
Membre émérite
 
Inscription : décembre 2003
Messages : 782
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 782
Points : 821
Points : 821
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?
fraoustin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2006, 12h32   #3
Membre Expert
 
Avatar de Harry
 
Homme
Ingénieur développement logiciels
Inscription : juillet 2002
Messages : 1 182
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
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 182
Points : 1 079
Points : 1 079
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 :
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
__________________

Attention le .NET sur PDA peut causer des chutes de cheveux
Harry est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2006, 09h29   #4
Membre Expert
 
Avatar de Harry
 
Homme
Ingénieur développement logiciels
Inscription : juillet 2002
Messages : 1 182
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
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 182
Points : 1 079
Points : 1 079
ReBonjour,

Voila WE terminé et je m'y remets.

Appareamment le
Code :
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
__________________

Attention le .NET sur PDA peut causer des chutes de cheveux
Harry est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2006, 14h38   #5
Membre Expert
 
Avatar de Harry
 
Homme
Ingénieur développement logiciels
Inscription : juillet 2002
Messages : 1 182
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
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 182
Points : 1 079
Points : 1 079
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
__________________

Attention le .NET sur PDA peut causer des chutes de cheveux
Harry est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2006, 15h18   #6
Expert Confirmé Sénior
 
Avatar de GrandFather
 
Inscription : mai 2004
Messages : 4 490
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : mai 2004
Messages : 4 490
Points : 5 049
Points : 5 049
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 :
__________________
FAQ XML
------------
« Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
Giacomo Leopardi
GrandFather est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2006, 15h57   #7
Membre Expert
 
Avatar de Harry
 
Homme
Ingénieur développement logiciels
Inscription : juillet 2002
Messages : 1 182
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
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 182
Points : 1 079
Points : 1 079
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.
__________________

Attention le .NET sur PDA peut causer des chutes de cheveux
Harry est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2006, 18h52   #8
Membre régulier
 
Inscription : mai 2004
Messages : 84
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 84
Points : 88
Points : 88
Par défaut lenteur du réseau

Salut,

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

Code php :
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 :
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
Citation:
le mieux est l'ennemi du bien
.

Xavier
vexa est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h49.


 
 
 
 
Partenaires

Hébergement Web