Récupérer les infos d'un fichier xml

Répondre
sparh
le 11/10/2007 à 20:09
sparh
Bonsoir,
je continue donc le post commencé ici.

Depuis le début j'ai un peu progressé (enfin je crois) ;)

Donc je génère en php un fichier xml qui contient les données à récupérer:
voici le fichier php (xml):
<?php
include("Includ/configuration.php");

// prepare le fichier html pour le mettre en utf8 (xml)
function cleanText($intext) {
return utf8_encode(htmlspecialchars(stripslashes($intext)));
}

header("Content-Type: text/xml;charset=utf-8");
$titre = cleanText("$titre_site");

$joueu = $_GET['joueur'];

$req= "SELECT * FROM Jeux ORDER BY rand() LIMIT 1";
$res = mysql_query($req) or die('erreur<br />'.$req.'<br />'.mysql_error());


print("<?xml version=\"1.0\" encoding=\"utf-8\"?>");

// on affiche les infos
$row=mysql_fetch_array($req) ;
$titre = cleanText($row["jeux"]);
$lien = "$url_site/Jeux/".$row["url"];
$description = cleanText($row["texte"]) ;
$image= $row["image"];

print("<titre>$title</titre>
<lien>$link</lien>
<description>$description</description>
<image>$image</image>");


?>


Ce que j'aimerai donc c'est récupérer à(à partir d'un autre site) les infos contenues dans les 4 balises.

Voilà! J'ai pas mal cherché / essayé et pour l'instant je n'arrive à rien!

Donc si vous avez de bon liens ou une piste à me donner pour orienter mes recherches ce serai génial!
Merci d'avance

PS: Je suis en PHP 5 .
LupusMic
le 16/10/2007 à 17:57
LupusMic
Pour préciser, le document généré par le code soumis n'est pas un document XML valide car il ne comporte pas une racine unique.

Personnellement j'utilise DOMDocument, mais je ne sais pas ce que ça donne sous forte charge.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
sparh
le 20/10/2007 à 12:40
sparh
Salut,
tu pourrais me préciser pourquoi mon fichier ml n'est pas valide?
Je ne comprends pas bien la notion de racine / enfants ?
Merci d'avance
sparh
le 20/10/2007 à 13:27
sparh
Salut,
bon j'avance minimètre par minimètre (et encore!).

Donc voici mon letest.php qui récupère le xml:
<?php
$document_xml = new DomDocument;
$document_xml->load('test.xml');

Ca marche.
Mon problème le document que je veu charger n'a pas l'extension xml mais php!!
Donc je fais ça:
<?php
$document_xml = new DomDocument;
$document_xml->load('test.php');


Et paf erreur:
Warning: DOMDocument::load() [function.DOMDocument-load]: Start tag expected, '<' not found in /home.10.8/www/JEUX/FR/RSS/test.php, line: 3 in /home.10.8/www/JEUX/FR/RSS/letest.php on line 3

Une idée ??
LupusMic
le 21/10/2007 à 05:08
LupusMic
(sprah) Tu vois que tu n'as pas complètement compris ce qu'était un fichier XML ;) Mais vu que tu fais des efforts, et que je suis magnanime (en tant que souverain détenteur de la vérité suprême de... bon, j'arrête), bah j'vais t'expliquer.

Un document XML, c'est une représentation textuelle d'un arbre, la représentation d'une hiérarchie. L'arbre est composé de nœuds (nodes) qui se déclinent en racine (root), éléments (elements) et en feuilles (leafs). Les éléments peuvent posséder des attributs.

Un élément est un nœud pouvant avoir un élément parent, des éléments enfants et des attributs.

La racine est le seul élément qui n'a pas de parent.

Un nœud est un élément ayant des éléments enfants.

Une feuille est un élément n'ayant pas d'éléments enfants.

Un attribut est un nœud ne pouvant avoir d'enfant, et n'a pas de parent, mais appartient à un élément.

Ce ci étant posé, prenons un exemple :

doc.xml
<?xml version='1.0' encoding='utf-8' sandalone='yes' ?>
<collection>
<game id='first'>
<titre>Premier jeu.</titre>
<lien>/games/first.php</lien>
<description>Un jeu qui déchire sa mère !</description>
<image>/games/art/first.svg</image>
</game>
<game>
<titre id='second'>Dernier jeu !</titre>
<lien>/games/second.php</lien>
<description>Un autre jeu qui déchire, mais pas ta mère.</description>
<image>/games/art/second.svg</image>
</game>
</collection>


Dans cet exemple, la racine est <collection>, et chaque nœud <game> a pour père cet élément unique <collection>, et possèdent chacun quatre éléments. À noter que ces huit éléments ne sont pas des feuilles, masi que ce sont leurs enfant (les TextNodes ) qui sont les feuilles.

En ce qui concerne le dernier problème que tu as levé. Réfléchit un peu. Que charges-tu donc dans ton DOMDocument ? Es-tu vraiment certain que c'est ton fichier XML ? Non, bien sûr que non, c'est ton fichier PHP qui n'est pas interprété. C'est pour ça que tu as directement un message d'erreur.

En espérant t'avoir aidé.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
sparh
le 22/10/2007 à 19:23
sparh
Salut et merci pour ton post très instructif ;)

Donc pour comencer je vai mettre à jour mes fichiers xml pour les mettres aux normes.

Par contre je revien sur ma question:
(erreur quand je charge letest.php)

Comment faire pour que mon fichier (que je génère en php) est l'extension xml?? (et donc qu'il soit correctement lu)

Merci d'avance

PS: j'aime beaucoup cette petite phrase:
en tant que souverain détenteur de la vérité suprême de...

smiley
LupusMic
le 23/10/2007 à 10:23
LupusMic
Je m'aime beaucoup aussi :-D

Alors, premièrement, changer l'extension d'un fichier ne change rien au fichier... ça change juste son nom. L'extension n'ai pas un élément fiable pour vérifier le type d'un fichier.

La méthode que j'utilise, lorsque je développe un code qui utilise du XML est la suivante :

- écriture d'un fichier XML d'exemple
- écriture de sa DTD (bientôt XSchema)
- écriture d'une classe chargeant et lisant cette classe
- écriture des tests de la classe

Si tu as besoin de générer le XML :

- modification de la classe poru qu'elle soit capable de générer le document XML
- écriture d'un test de génération du XML
Maintenant, si tu veux charger le XML généré par ton document PHP, il faut le charger à travers le réseau. Par exemple :

$xml = file('http://.../games.php') ;
// Code pour traiter la chaine $xml contenant tes données.


J'ai peur de ne pas avoir été assez clair, ou encore de t'avoir fait peur :) Ça ira ?
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
sparh
le 24/10/2007 à 09:15
sparh

J'ai peur de ne pas avoir été assez clair, ou encore de t'avoir fait peur :) Ça ira ?


En effet il y a beaucoup de nouveaux termes pour moi ;)
Mais je vais d'abord les googler un peu avant de revenir poser des questions inutiles ;)

Je me renseigne un, je fais des tests et je reviens ;)

See ya...
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours