LIRE DES BALISES XML

Résolu
cs_loupile Messages postés 95 Date d'inscription dimanche 8 janvier 2006 Statut Membre Dernière intervention 7 avril 2011 - 23 nov. 2006 à 14:47
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 23 nov. 2006 à 17:28
bonjour,

je suis en PHP5 j'arrive bien a lire le contenu de balise simple dans un fichier xml mais je n'arrive pas a lire des balises aves des caracteres specifiques, je m'explique

j'arrive bien à lire une balise <titre>jljsjflkjlfsj<titre>  en ecrivant $titre=$item->titre;

mais comment faire pour lire une balise du type <titre:1> kjljlkjfsjlkjs <titre:1> ?

merci de votre aide .... :-)

9 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
23 nov. 2006 à 17:02
Ou mieux :

<?php
$xml = <<<EOD
<root xmlns:itunes="http://toto.org/itunes-image">
   
</root>
EOD;
$sxe = new SimpleXMLElement($xml);
$entries = $sxe -> xpath ('//itunes:image/@href');
foreach ($entries as $sImg) {
    echo (string)$sImg, '
';
}
?>
3
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
23 nov. 2006 à 15:22
Hello,

y a un problème là.
Je vois 3 solutions :
- soit ton "titre:1" est le nom complet de ta balise, auquel cas ta balise est incorrecte. ":" est une valeur incorrecte pour un "tagname".
- soit ton "titre:1" se réfère à un espace de nom. Auquel cas, il manque des trucs.
http://xmlfr.org/documentations/tutoriels/050912-0001
- soit tu utilises cette reco des espaces de nom pour créer un nom de balise normalement incorrect...auquel cas, t'es pas dans la mouise ;-) Je ne pense pas que ce soit prévu par php.
Une solution est peut-être :
$sTagName = 'titre:1';
echo $item -> $sTagName;

En tous cas, on aurait besoin de plus d'infos pour se prononcer.
0
cs_loupile Messages postés 95 Date d'inscription dimanche 8 janvier 2006 Statut Membre Dernière intervention 7 avril 2011
23 nov. 2006 à 15:29
en fait j'essaye de lire mon flux xml produit pour itunes sur mon propre site ... et j'ai des balises du genre :

Jason et Brad deux gentlemen dans Besançon ! Vous avez croisez deux personnes étranges en train de se filmer, vous allez les découvrir !
Ce n’est pas vraiment du cinéma, ni de la radio d’ailleurs, surtout pa


et je voudrais reussir a recuperer ce que j'ai entre ces balises .... mon problème c'est effectivement les ':'
et je ne sais pas comment faire

merci
0
cs_loupile Messages postés 95 Date d'inscription dimanche 8 janvier 2006 Statut Membre Dernière intervention 7 avril 2011
23 nov. 2006 à 15:51
je crois que tu as raison, il s'agit d'un espace de nom, j'ai pris le tutoriel que tu m'as envoyé ... mais je n'y comprends rien ...:-(
sais tu comment recuperé les valeurs a l'interieur d'un espace de nom de typ ?

merci d'avance
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
23 nov. 2006 à 15:58
Ok je pige mieux, ce sont bien des préfixes.

Voici un exemple, en passant par xpath :

<?php
$xml = <<<EOD

   <title>My Book</title>
   <chapter id="1">
       <chap:title>Chapter 1</chap:title>
       Donec velit. Nullam eget tellus vitae tortor gravida scelerisque.
           In orci lorem, cursus imperdiet, ultricies non, hendrerit et, orci.
           Nulla facilisi. Nullam velit nisl, laoreet id, condimentum ut,
           ultricies id, mauris.

   </chapter>
   <chapter id="2">
       <chap:title>Chapter 2</chap:title>
       Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Proin
           gravida. Phasellus tincidunt massa vel urna. Proin adipiscing quam
           vitae odio. Sed dictum. Ut tincidunt lorem ac lorem. Duis eros
           tellus, pharetra id, faucibus eu, dapibus dictum, odio.

   </chapter>

EOD;

$sxe = new SimpleXMLElement($xml);
$entries = $sxe -> xpath ('//chap:title');
foreach ($entries as $sChapTitle) {
    echo (string)$sChapTitle, '
';
}
?>
0
cs_loupile Messages postés 95 Date d'inscription dimanche 8 janvier 2006 Statut Membre Dernière intervention 7 avril 2011
23 nov. 2006 à 16:14
bon alors j'essaye avec xpath sur un truc du genre

et j'ai mis comme code

$rss = simplexml_load_file($tag); 
$imagetunes=$rss->channel->xpath ('//itunes:image');
$image2=$imagestunes['href'];

echo '';

et boulet comme je suis  là y'a rien qui se passe ..... :-(

tu as une idée de ce que je n'ai pas fait correctement ?

merci encore
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
23 nov. 2006 à 16:59
En espèrant que ton espace de nom est défini (là, je l'ai défini au hasard hein ) :
<?php
$xml = <<<EOD
<root xmlns:itunes="http://toto.org/itunes-image">
   
</root>
EOD;

$sxe = new SimpleXMLElement($xml);

$entries = $sxe -> xpath ('//itunes:image');

foreach ($entries as $sChapTitle) {
    echo (string)$sChapTitle['href'], '
';
}
?>
T'as oublié le foreach () de toute façon : xpath renvoie un noeud à parcourir.
0
cs_loupile Messages postés 95 Date d'inscription dimanche 8 janvier 2006 Statut Membre Dernière intervention 7 avril 2011
23 nov. 2006 à 17:07
c'est le pied .. un grand merci .... ca marche super !!!!!! :-)
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
23 nov. 2006 à 17:28
Merci de valider la/les réponses qui t'ont aidées afin d'aider les autres.
0
Rejoignez-nous