Parse error

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Parse error

Re: Parse error

par yann18 » 15 oct. 2013, 18:25

autre méthode pour récupérer une balise appartenant à un namespace donné.
dans le doc xml content est le préfixe attribué à l'espace de nom http://url-du-namespace (xmlns:content="http://url-du-namespace").Pour recuperer la balise encoded préfixé par content:
  //on récupère le namespace 
  $child = $item->children('http://url-du-namespace');//à remplacer par l'url du namespace se trouvant dans le document xml
$feedElements[$key]->itemDescription = $child->encoded; //balise encoded

Re: Parse error

par yann18 » 15 oct. 2013, 17:34

il faut déjà récupérer l'espace de nom, avec la fonction getnamespaces(), qui définit la balise encoded.

$file = file_get_contents("http://site.com.xml");
$xml = new SimpleXmlElement($file);


$namespaces = $xml->getNamespaces(true);

var_dump($xml->children($namespaces['content']));//tous les enfants de la racine

Par contre sans connaissance de ton document xml il m'est difficile d'aller plus loin.

Re: Parse error

par damien_55 » 15 oct. 2013, 16:25

Re,

En fait tu ne peux pas parser avec ce ":" dans ton expression $item->content:encoded, c'est pas possible. ça va forcément générer une erreur.

Soit tu choisis de parser en accédant aux "tagname" tel que c'est présenté dans la deuxième solution.

soit une troisième solution est de charger ton xml, faire un str_replace sur tes deux balise: <content:encoded> en remplaçant par exemple par <description>. et tu parses le résultat sorti.

Re: Parse error

par Aldo455 » 15 oct. 2013, 16:15

Bonjour
Merci de vos réponses

mais $item['content']['encoded'] ne fonctionne pas il me manque ":"
Mon libellé est bien "content:encoded"

Voici mon code Xml pour cet item:

<content:encoded>
<![CDATA[<p>contenu à afficher</p>]]>
</content:encoded>

Je pense que c'est une erreur de syntaxe avec ce maudit ":" dans $feedElements[$key]->itemDescription = $item->content:encoded;

Merci de votre patience

Aldo

Re: Parse error

par damien_55 » 15 oct. 2013, 15:06

Si ça ne marche pas, je me tournerai plus vers cette solution à adapter à ton besoin:
$url = 'put_your_feed_URL';

    $rss = new DOMDocument();
    $rss->load($url);
    $feed = array();
    foreach ($rss->getElementsByTagName('item') as $node) {
        $item = array (
                'title' => $node->getElementsByTagName('title')->item(0)->nodeValue,
                'link' => $node->getElementsByTagName('link')->item(0)->nodeValue,
                'pubDate' => $node->getElementsByTagName('pubDate')->item(0)->nodeValue,
                'description' => $node->getElementsByTagName('description')->item(0)->nodeValue,
                'content' => $node->getElementsByTagName('encoded')->item(0)->nodeValue

                );
        array_push($feed, $item);
    }
Google est ton ami :wink:

Re: Parse error

par damien_55 » 15 oct. 2013, 15:03

comme ceci peut etre: $item['content']['encoded']

Re: Parse error

par Aldo455 » 15 oct. 2013, 14:31

Bonjour

Désolé je me suis mal exprimé

Je cherche à récupérer un flux rss en xml pour un site internet.
Au départ j'avais bien un item description correspondant à
$feedElements[$key]->itemDescription = $item->description;

Mais l'item description a été changé par content:encoded
d'où le remplacement de variable :
$feedElements[$key]->itemDescription = $item->content:encoded;

J'ai essayé plusieurs trucs du type
$feedElements[$key]->itemDescription = $item->content\:encoded;
$feedElements[$key]->itemDescription = $item->content.':'.encoded;

Mais j'ai toujours une erreur
Merci
Aldo

Re: Parse error

par moogli » 15 oct. 2013, 13:56

Modération :
Merci d'utiliser un titre clair et qui correspond bien à ta demande.
Les titres contenant "HELP !", "Aidez-moi", "J'ai un problème", "Ça marche pas",...
n'apportent rien à la compréhension de ta demande.

Par ailleurs, nous savons déjà par ton message que tu as besoin d'aide. ;)

Merci de prendre le temps de lire les règlements.

Re: utilisation de :

par xTG » 15 oct. 2013, 13:27

Pour y voir un peu plus clair sur la façon d'accéder à l'élément :
var_dump($item->content);

Re: utilisation de :

par damien_55 » 15 oct. 2013, 12:50

Salut,

tu cherches a parser quoi? c'est quoi l'expression d'origine? A quel élément souhaites tu accéder?

Effectivement, tes ":" te génère une erreur.

Vois la doc: simple_xml par exemple.

Parse error

par Aldo455 » 15 oct. 2013, 12:35

Bonjour,

Un truc tout bête j'obtiens une erreur :

$feedElements[$key]->itemDescription = $item->content:encoded;

le : n'est pas apprécié

J'obtiens comme erreur Parse error: syntax error, unexpected ':'

Merci de votre aide

Aldo