PHP simplexml_load_string non funziona

Ho una string XML recuperata da un file XML. Non riesco ad accedere direttamente al file usando simplexml_load_file() . La ragione è che devo farlo attraverso Amazon S3 getObject (). Quando echo la string, posso vedere l'out put come un vero file XML. Ma quando provo a caricarlo su un object XML usando il codice qui sotto, non funziona. La variabile $s3Data contiene esattamente il contenuto XML nel link specificato.

 $xml = simplexml_load_string($s3Data); 

Ho bisogno del tuo aiuto per capirlo. La string XML che sto ottenendo è disponibile qui.

http://mediatheques-aphp.bibliomedias.net/12.xml

MODIFICARE

Ho creato la string XML e testato. Ora ricevo gli errori seguenti. Come posso risolvere questi.

Attenzione: simplexml_load_string () [function.simplexml-load-string]: Entity: row 12: errore parser: l'input non è corretto UTF-8, indica la codifica! Byte: 0xEF 0x76 0x65 0x3C in C: \ Programmi \ Zend \ Apache2 \ htdocs \ voxmedia \ application \ modules \ import \ controller \ NaiveController.php sulla linea 1458

Attenzione: simplexml_load_string () [function.simplexml-load-string]: 2009 naïve in C: \ Programmi \ Zend \ Apache2 \ htdocs \ voxmedia \ application \ modules \ import \ controller \ NaiveController.php sulla linea 1458

Attenzione: simplexml_load_string () [function.simplexml-load-string]: ^ in C: \ Programmi \ Zend \ Apache2 \ htdocs \ voxmedia \ application \ modules \ import \ controller \ NaiveController.php sulla linea 1458

OK Ora sento il problema con una sorta di codifica delle stringhe o qualcosa del genere. C'è un modo per risolvere questo problema?

Grazie.

simplexml_load_string e simplexml_load_file sono bug e non funzionano bene su XML con un markup complesso. Ho provato entrambe le funzioni per analizzare alcune risposte VALID XML SOAP e non riuscivo nemless a get un messaggio di errore. Ho dovuto usare DOMDocument invece (ha funzionato come un fascino).

Ecco come supponiamo di controllare gli errori simplexml (se sei fortunato a vedere errori, non solo "false" restituito dalla function)

 libxml_use_internal_errors(true); $xml=simplexml_load_string($myXMLData); //or simplexml_load_file foreach( libxml_get_errors() as $error ) { print_r($error); } 

Potrei trovare una risposta alla mia domanda con una piccola soluzione. simplexml_load_string() visualizza continuamente errori di codifica. Quindi ho usato simplexml_load_file() come muggito. Ho salvato il file nella posizione locale e quindi carico con simplexml_load_file() .

 $tempLocalPath = "temp/data.xml"; file_put_contents($tempLocalPath, $s3Data); $xml = simplexml_load_file($tempLocalPath); 

Tuttavia ancora non capisco perché simplexml_load_string() non possa analizzare la stessa cosa.

Quando echo una variabile che è in realtà un object, viene chiamato il suo metodo __toString () per convertire l'object in una string, ma quando si passa l'object per funzionare l'object issn't convertito.

Uso:

 $xml = simplexml_load_string( (string)$s3Data); 

Per eseguire il cast dell'object $ s3Data su una string.

PS: usa var_dump ($ s3Data) e var_dump ($ xml) per eseguire il debug dei contenuti di una variabile invece di echo.