Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[PHP5][SimpleXML] pb de namespace

2 réponses
Avatar
Edouard Guerin
Bonjour,

Je test PHP5 et plus particulièrement les belles fonctions de SimpleXML.
Pour cela je voudrais parser (enfin extraire les données) un fichier RSS
1.0 (RDF), cependant les fichiers XML utilisent des namespace comme cet
exemple :

<?xml version="1.0" encoding="UTF-8" ?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:admin="http://webns.net/mvcb/"
xmlns:cc="http://web.resource.org/cc/"
xmlns="http://purl.org/rss/1.0/">

...

J'arrive à extraire des données sur des flux RSS 2.0 car il n'y a pas de
namespace, mais là je bloque dans une expression XPath à cause de ce rdf:RDF

Exemple sur un RSS 2.0 :

$xml = simplexml_load_file(rss.xml);
$link = $xml->xpath('/rss/channel/link');

Donc ici je récupère bien mon lien...

Maintenant sur la version RSS 1.0 là je bloque :-(
Je suis allé voir cet article :
http://www.onlamp.com/pub/a/php/2004/01/15/simplexml.html?page=2
mais rien n'y fait, la fonction register_ns n'est pas acceptée.
PHP me retourne que mon objet ($xml) ne connait pas la méthode register_ns.

j'ai essayé des syntaxes de ce genre :
$link = $xml->xpath('rdf:RDF/channel/link');
$link = $xml->xpath('namespace::RDF/channel/link');
...

mais je ne trouve pas. Si quelqu'un à la solution, je suis vraiment
preneur :)

Merci d'avance et bonne journée à tous.

--
Edouard Guérin
http://www.icitrus.net

2 réponses

Avatar
Johannes Schlueter
Bonsoir,

Edouard Guerin wrote:
Je test PHP5 et plus particulièrement les belles fonctions de SimpleXML.
Pour cela je voudrais parser (enfin extraire les données) un fichier RSS
1.0 (RDF), cependant les fichiers XML utilisent des namespace comme cet
exemple :


Des fonctions SimpleXML sont très interessant pour les fichiers XML simples
- j'aime ça! Mais ces sont mal pour les fichiers avec des Namespaces etc.
Moi, j'ai eu beaucoup des problèmes avec SimpleXML donc j'utilse plus des
fonctions DOM-XML, mais DOM-XML est très compliqué....

johannes

p.s. Je souhaite que vous comprenez mon text - je suis allemand et j'aprends
la langue française depuis un année.

Avatar
Edouard Guerin
p.s. Je souhaite que vous comprenez mon text - je suis allemand et j'aprends
la langue française depuis un année.


Oui j'ai compris :-) merci d'avoir fait l'effort d'écrire en français !
Je vais aussi utiliser DOM-XML car effectivement SimpleXML reste
relativement simpliste (mais bien pratique).

Merci.

--
Edouard Guérin
http://www.icitrus.net