2009-08-25 2 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.'); 
} 

wenn ich führen Sie diesen Code heißt es zu öffnen, ist fehlgeschlagen, ich nicht verstehen, warum ..simplexml_import_dom - funktioniert nicht

+0

also, sind Sie sicher, dass die Datei existiert? –

+0

Überprüfen Sie Ihr Fehlerprotokoll, es ist möglich, dass URL-Wrapper deaktiviert wurden und dann können Sie solche Dateien nicht laden. –

+0

Ja, die genannte XML-Datei existiert, ich kann auf die URL zugreifen und nicht auf diesen Code. Ersetzen Sie die XML-Datei, die ich von Ihnen habe, und führen Sie sie aus. –

Antwort

1

simplexml_import_dom einen DOM-Knoten nimmt, sondern als eine URL. Sie sollten simplexml_load_file intead verwenden:

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

getan Simplexml_load_file funktioniert nicht –

+0

Re Ihren letzten Kommentar zu der Frage, Entfernen der 'file_exists 'if-Anweisung hätte es insgesamt behoben. Du "reversed the statements" bedeutet im Grunde genommen nur "simplexml_load_file" läuft zuerst, während es vorher * nie * laufen würde. –

0

file_exists() funktioniert nicht auf URLs. Für eine URL ist das nicht einmal sinnvoll.

simplexml_import_dom() soll DOM-Knoten in SimpleXML-Knoten konvertieren. Es erwartet eine Instanz eines DOM-Knotens als Argument. Sie übergeben stattdessen eine URL.

Vielleicht möchten Sie:

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

es ist die Simplexml, die nicht funktioniert, nein, das Stück Code funktioniert nicht –

+0

Haben Sie die file_exists Prüfung vor dem Versuch, den oben genannten Code? Wie an anderer Stelle in diesem Thread erwähnt, funktioniert file_exists nicht über http (s). –

+0

ja Überprüfen Sie den neuesten Kommentar –

0

Überprüfen Sie, ob:

a) Parameter für simplexml_import_dom ein DOMNode ist.

b) Sie

in der php.ini aktiviert

Als Alternative allow_url_fopen haben, können Sie versuchen, verwenden [simplexml_load_file] [3] mit der URL und sehen, was passiert.

Zusätzliche Verbindungen: php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen

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

+0

allow_url_fopen ist offen –

0

generell ini Einstellung dies verbieten.

Sie können diese Methode versuchen, um das Vorhandensein einer Remote-Datei zu überprüfen.

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

Überprüfen Sie den neuesten Kommentar in Frage –

0

Was

tut
<?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"; 
} 

drucken?

+0

Debug: len (Inhalt) = 35966 –

0

es funktioniert anders herum, nicht sicher warum - aber gelöst

Verwandte Themen