test xml

Eléphant du PHP | 130 Messages

12 sept. 2007, 00:32

Bonsoir,

Je me familiarise avec simplexml (php 5.2.1) en testant des morceaux de code d'un livre et j'ai un message d'erreur que je ne comprends pas :

Parse error: syntax error, unexpected T_STRING in /var/www/test_infobulles/test3/test_xml.xml on line 1

code xml :
<?xml version="1.0" encoding="ISO-8859-1" ?>
<html>
<head>PHP 5</head>   
<body>
<h1>PHP 5</h1>
<p>La version 5 de <acronym>PHP</acronym>est sorti</p>
<p>La derniere version etait la 4.3.x</p>             
</body>
</html>
code php :
<?php  
/**Essai réinitialisé du code xml**/ 
require ('test_xml.xml'); 
$racine = simplexml_load_string('test_xml.xml');                          
?>
Le vent souffle où il veut et tu en entends le bruit,
Mais tu ne sais d'où il vient, ni où il va ...

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

12 sept. 2007, 00:40

Il y a 2 erreurs dans ton code PHP : la première c'est de faire un require (ou include) alors qu'il ne s'agit pas de code PHP. La seconde, c'est d'utiliser simplexml_load_string() au lieu de simplexml_load_file().

Le code correct devrait être : (le ?> final est facultatif)
<?php
$racine = simplexml_load_file('test_xml.xml');
De plus, je te recommande fortement de nommer tes variables du nom de l'élément racine. Dans l'exemple, ce serait donc $html. De cette façon, tu vois beaucoup mieux à quel nœud tu accèdes, par exemple :
$html = simplexml_load_file('test_xml.xml');
$h1 = $html->body->h1;
$title = $html->head->title;
Finalement, l'erreur que tu reçois est dû au "require" qui s'attend à voir du code PHP. Ton serveur doit être configuré avec l'option short_open_tag activée, et donc tout ce qui se trouve après le <? est considéré comme du PHP, comme si tu avais fais un script tel que
<?php
xml
<html>
// etc...

Eléphant du PHP | 130 Messages

12 sept. 2007, 00:54

Bonsoir Hubert Roksor,

Pourrais-tu m'expliquer les 2 dernières lignes stp ?

...
$h1 = $html->body->h1;
$title = $html->head->title;
Le vent souffle où il veut et tu en entends le bruit,
Mais tu ne sais d'où il vient, ni où il va ...

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

12 sept. 2007, 01:20

Ça récupère le contenu de l'élément h1 fils de body puis de title fils de head (c'est un exemple, l'élément n'existe pas dans ton fichier XML).

Eléphant du PHP | 130 Messages

12 sept. 2007, 01:28

Ok, merci.

Je ne connaissais pas cette façon de présenter !
Le vent souffle où il veut et tu en entends le bruit,
Mais tu ne sais d'où il vient, ni où il va ...

Invité
Invité n'ayant pas de compte PHPfrance

12 sept. 2007, 01:54

Aurais-tu un lien qui pourrait m'en expliquer plus sur des cas pratiques concrets, par hasard ?