LIRE DES BALISES XML [Résolu]

cs_loupile 95 Messages postés dimanche 8 janvier 2006Date d'inscription 7 avril 2011 Dernière intervention - 23 nov. 2006 à 14:47 - Dernière réponse : malalam 10918 Messages postés lundi 24 février 2003Date d'inscription 2 mars 2010 Dernière intervention
- 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 .... :-)
Afficher la suite 

9 réponses

Répondre au sujet
malalam 10918 Messages postés lundi 24 février 2003Date d'inscription 2 mars 2010 Dernière intervention - 23 nov. 2006 à 17:02
+3
Utile
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, '
';
}
?>
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de malalam
malalam 10918 Messages postés lundi 24 février 2003Date d'inscription 2 mars 2010 Dernière intervention - 23 nov. 2006 à 15:22
0
Utile
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.
Commenter la réponse de malalam
cs_loupile 95 Messages postés dimanche 8 janvier 2006Date d'inscription 7 avril 2011 Dernière intervention - 23 nov. 2006 à 15:29
0
Utile
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
Commenter la réponse de cs_loupile
cs_loupile 95 Messages postés dimanche 8 janvier 2006Date d'inscription 7 avril 2011 Dernière intervention - 23 nov. 2006 à 15:51
0
Utile
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
Commenter la réponse de cs_loupile
malalam 10918 Messages postés lundi 24 février 2003Date d'inscription 2 mars 2010 Dernière intervention - 23 nov. 2006 à 15:58
0
Utile
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, '
';
}
?>
Commenter la réponse de malalam
cs_loupile 95 Messages postés dimanche 8 janvier 2006Date d'inscription 7 avril 2011 Dernière intervention - 23 nov. 2006 à 16:14
0
Utile
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
Commenter la réponse de cs_loupile
malalam 10918 Messages postés lundi 24 février 2003Date d'inscription 2 mars 2010 Dernière intervention - 23 nov. 2006 à 16:59
0
Utile
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.
Commenter la réponse de malalam
cs_loupile 95 Messages postés dimanche 8 janvier 2006Date d'inscription 7 avril 2011 Dernière intervention - 23 nov. 2006 à 17:07
0
Utile
c'est le pied .. un grand merci .... ca marche super !!!!!! :-)
Commenter la réponse de cs_loupile
malalam 10918 Messages postés lundi 24 février 2003Date d'inscription 2 mars 2010 Dernière intervention - 23 nov. 2006 à 17:28
0
Utile
Merci de valider la/les réponses qui t'ont aidées afin d'aider les autres.
Commenter la réponse de malalam

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.