Se connecter avec
S'enregistrer | Connectez-vous

lecture du contenu XML dans une chaine de caractère

Dernière réponse : dans Programmation

J'ai un peti problème avec la lecture d'une Chaîne de caractères $string qui contient du XML

j'ai fait $doc = new DOMDocument();
$doc->loadXML($string);

j'ai le message d'erreur Warning: domdocument::D omdocument() expects at least 1 parameter, 0 given

et Fatal error: Call to undefined method domdocument::loadXML()

si kelkun a une idée merci pour l'aide
Lassé par la pub ? Créez un compte
Expert Programmation

Visiblement, tu a un problème avec ton $string, alors affiche le pour savoir ce qu'il y a dedans (je pense qu'il n'y a rien).
Ensuite, du code, tu ne montre pas l'initialisation de $string, alors je ne vois pas comment on peut t'aider :) 

je veux faire un parsing d'un fichier XML que je recupère dans un URL
j'ai utilisé la librairie cURL pour


$string = '';
$url = "http://downloads.bbc.co.uk/podcasts/fivelive/mayo/rss.x...";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_PROXY, 'proxy:num_port');
//curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$string .= htmlentities(curl_exec($ch));
echo $string;

sa m'affiche correctement le contenu du fichier XML

Je veux donc extraire le contenu de ces données xml avec les méthode DOMDocument

merci
Expert Programmation

Ah non j'avais mal lu l'erreur.
Apparemment, il veut un paramètre à l'instanciation de DOMDocument.
Essaie avec $doc = new DOMDocument('1.0');

Sinon tu peux faire ceci (car loadXML est aussi une méthode de classe):
$doc = DOMDocument::loadXML($string);

j'ai poussé un peu plus j'ai fais $doc = new DOMDocument;
$doc->loadXML($string);

et j'obtiens le message d'erreur suivant

Warning: DOMDocument::loadXML() [function.DOMDocument-loadXML]: Empty string supplied as input

merci
Expert Programmation

ça marche, c'est juste que tu as une autre erreur.

C'est que ta chaine de caractère n'est pas correcte. En effet elle ne contient pas les caractères '<', '>' etc.
C'est parce que tu as utilisé htmlentities !
ça a remplacé tous les '<' en '<'. Du coup, le parsing XML ne trouve aucun élément.
Donc enlève le htmlentities.
Lassé par la pub ? Créez un compte
Tom's guide dans le monde