Aller au contenu
slash31

XML -> PHP sur un fichier avec des valeurs aux balises

Noter ce sujet :

Recommended Posts

slash31    0

Bonjour,

Je voudrais parser un fichier XML (dispo ici http://lurvemag.tumblr.com/api/read) en PHP.

Habituellement je découpe les articles comme ceci :

$items = explode('<post>', $rawitems[0]);

Mon problème ici est que la balise <post> (qui délimite un article) contient des valeurs : <post id="89007972" url="...." .............>

J'ai donc essayé $items = explode('<post (.*) format="html">', $rawitems[0]); mais ça ne marche pas.

Une idée ??

Merci d'avance

Partager ce message


Lien à poster
Partager sur d’autres sites
Dadou    25

Pourquoi le faire à la main, quand une classe peut te le faire sans soucis

Partager ce message


Lien à poster
Partager sur d’autres sites
SStephane    16

A la main c'est chiant, tu risques de refaire une classe qui existe déjà pour mapper ton XML en objet (ce que fait SimpleXML, l'autre je ne la connais pas), tu as une contrainte particulière à ce niveau ?

Partager ce message


Lien à poster
Partager sur d’autres sites
slash31    0

Ben SImpleXML marche pas sur mon serveur (fonction inconnue) et MagPie ben j'aime pas reprendre de scripts "déja fait" qui ne m'appartienne pas, quand je fais un site, je commence toujours de la page blanche

Partager ce message


Lien à poster
Partager sur d’autres sites
Dadou    25

Je n'aime pas trop non plus prendre des scripts tout fait, mais certaines classes soulagent quand même pas mal le boulot. Au pire tu la télécharge et tu regardes comment le parsing est fait

Partager ce message


Lien à poster
Partager sur d’autres sites
slash31    0

Pour simplexml c'est bon j'ai la solution : je suis pas en PHP5 tout simplement, je pensais pourtant que c'était automatique chez OVH, mais bon vu que c'est pour un client de toute façon je préfere etre sur que mon code soit compatible ^^

Je vais regarde le parsing de magpie alors oui meme si bon aprés pour exploiter mon XML y'avais aucun soucie, juste le explode qui posait probleme

Partager ce message


Lien à poster
Partager sur d’autres sites

Pour forcer ton serveur à interpréter tes pages avec une extension .php avec php5, tu peux rajouter cette ligne dans le .htaccess :

SetEnv PHP_VER 5

Partager ce message


Lien à poster
Partager sur d’autres sites
Dadou    25

Chez OVH pour profiter du PHP5 il faut mettre au début du .htaccess à la racine du site :

SetEnv PHP_VER 5

Edit : Captain, le modo qui répond plus vite que son ombre :P

Partager ce message


Lien à poster
Partager sur d’autres sites
slash31    0

C'est bon j'ai mon serveur mis en PHP5, SimpleXML me sort une phrase qui m'avance pas plus que le XML brut, et quand je regarde le guide de php.net y'a des flèches partout (php objet je suppose, chose a laquelle je ne comprend rien du tout).

Au final je pense que ça irais plus vite avec un explode ...

Et toute façon ça ne fonctionne pas

Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 1: parser error : Start tag expected, '<' not found

Modifié par slash31

Partager ce message


Lien à poster
Partager sur d’autres sites
Dadou    25

il va bien falloir s'y mettre un jour a la programmation objet, bientôt il n'y aura plus que cela. Surtout que la simpleXML permet une lecture de XML vraiment simplifiée. Je l'ai utilisé pour mettre en place un webservice et cela a été que du bonheur

Partager ce message


Lien à poster
Partager sur d’autres sites
slash31    0

Ben j'ai essayé tous les codes proposés par php.net pour exploiter mon XML (en les adaptants a mes noms de balises bien sur) : aucun ne marche j'ai soit l'érreur ci dessous, soit rien ne s'affiche

Application :

$site = &quot;http://lurvemag.tumblr.com/api/read";

$xml = new SimpleXMLElement($site, NULL, TRUE);

print_r($xml);

===========> Fonctionne est me donne tout le XML

$xml = new SimpleXMLElement($site, NULL, TRUE);

foreach ($xml->post as $post) { echo 'TEST<br />'; }

===========> Ne m'affiche rien

Modifié par slash31

Partager ce message


Lien à poster
Partager sur d’autres sites

Tu es sûr que ton fichier XML est bien formé ? Arrives-tu à l'ouvrir dans un navigateur, par exemple ?

Edit : C'est normal, regarde ce que te donne le print_r ;)

Tu dois sûrement faire quelque chose du genre :

foreach($xml->posts->post as $post)

Partager ce message


Lien à poster
Partager sur d’autres sites
Dadou    25

Normal, la valeur $site doit être le contenu du xml et non pas l'url du xml

ou alors utilises

$xml = simplexml_load_file('test.xml')

Partager ce message


Lien à poster
Partager sur d’autres sites
mayalali    0

bonjour, en faite jai un problème avec un flux xml qui se trouve dans une url, je veux parser juste une partie de ce fichier et pas la totalité,

donc je veux avec simplexml je charge une chaine qui a l'url de flux et la partie de fichier xml a parser au même temps,

ya un moyen de faire ça,

priere de me donner une reponse sur ça, je vous serai tres reconnaissante

Partager ce message


Lien à poster
Partager sur d’autres sites
Dadou    25

En clair que veux tu?

Partager ce message


Lien à poster
Partager sur d’autres sites
ricardo    0

Je crois comprendre que tu veux extraire seulement une partie (interne) d'un fichier XML.

Est-ce que ce sont des fichiers formatés ayant la même structure ?

Peut-être que ceci te donnera une piste :

$xml = simplexml_load_file($url);
foreach ($xml->Root->Noeud->NoeudEnfant as $value){
...
}

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

×