2009-08-25 7 views
0
 
if (file_exists('http://something_from_a_url.xml')) { 
    $xml = simplexml_import_dom('http://something_from_a_url.xml'); 

    print_r($xml); 
} else { 
    exit('Failed to open xml file.'); 
} 

quand j'exécute ce code, il dit failed to open, je ne comprends pas pourquoi ..simplexml_import_dom - ne fonctionne pas

+0

alors, êtes-vous sûr que le fichier existe? –

+0

Vérifiez votre journal des erreurs, il est possible que les wrappers d'URL aient été désactivés et que vous ne puissiez pas charger de tels fichiers. –

+0

Oui, le fichier xml existe, je peux y accéder par l'URL et non par ce code. Remplacez le fichier xml que j'ai par le vôtre et exécutez. –

Répondre

1

simplexml_import_dom prend un nœud DOM, plutôt que d'une URL. Vous devez utiliser simplexml_load_file intead:

$xml = simplexml_load_file('http://something_from_a_url.xml'); 
print_r($xml); 
+0

done simplexml_load_file ne fonctionne pas non plus –

+0

Re votre dernier commentaire sur la question, en supprimant l'instruction 'file_exists' si l'ensemble l'aurait corrigé. Youre "inversant les instructions" signifie simplement que "simplexml_load_file" s'exécute en premier, alors qu'auparavant il ne fonctionnerait jamais. –

0

file_exists() ne fonctionne pas sur les URL. Cela n'a même pas de sens pour une URL. Simplexml_import_dom() est destiné à convertir des nœuds DOM en nœuds SimpleXML. Il attend une instance d'un noeud DOM en tant qu'argument. Vous passez une URL à la place.

Peut-être que vous voulez:

$simplexml = simplexml_load_string(file_get_contents($url)); 
+0

c'est le simplexml qui ne fonctionne pas, non ce morceau de code ne fonctionne pas –

+0

Avez-vous sorti la file_exists vérifier avant d'essayer le code ci-dessus? Comme mentionné ailleurs dans ce fil, file_exists ne fonctionne pas sur http (s). –

+0

oui cocher le dernier commentaire –

0

Vérifiez que:

a) paramètre pour simplexml_import_dom est un DOMNode.

b) vous avez allow_url_fopen activé dans votre php.ini

Comme alternative, vous pouvez essayer d'utiliser [simplexml_load_file] [3] avec l'URL et de voir ce qui se passe.

Liens supplémentaires: php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen

php.net/manual/en/function.simplexml-load-file.php

+0

allow_url_fopen est ouvert –

0

Le réglage généralement ini interdit cela.

Vous pouvez essayer cette méthode pour vérifier l'existence d'un fichier distant.

if (fopen($url, "r")) { 
    echo "File Exists"; 
} else { 
    echo "Can't Connect to File"; 
} 
+0

cocher le dernier commentaire en question –

0

Qu'est-ce que

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 

$contents = file_get_contents('http://something_from_a_url.xml'); 
echo '<div>Debug: len(contents)=', strlen($contents), "</div>\n"; 

libxml_use_internal_errors(true); 
libxml_clear_errors(); 
$xml = new SimpleXMLElement($contents); 

foreach(libxml_get_errors() as $error) { 
    echo 'error: ', $error->$message, "<br />\n"; 
} 

imprimer?

+0

Debug: len (contents) = 35966 –

0

cela fonctionne dans l'autre sens, pas sûr pourquoi - mais résolu