SimpleXML aruncare avertismente - cum să prindă?

Am ceva probleme în a determina ce se întâmplă cu simplexml_load_string() Folosesc codul de mai jos pentru a reda xml ... când rulez acest cod primesc mesaje de eroare cum ar fi:

Message: simplexml_load_string() [function.simplexml-load-string]: Entity: line 94: parser error : Opening and ending tag mismatch: meta line 15 and head

Orice idei despre cum pot prinde aceste avertismente? libxml_get_errors nu afectează.

                $response = simplexml_load_string($response);
                var_dump($response);
                if (count(libxml_get_errors()) > 0) {
                    print_r(libxml_get_errors());
                }

                if (is_object($response)) { //returns true when warnings are thrown
                    //process response
                } else {
                    //record error
                }
0
Încărcați un fișier .xml incorect. Poate delega problema la tipul care o furnizează?
adăugat autor FailedDev, sursa

2 răspunsuri

libxml_use_internal_errors(true);//!!!

$elem = simplexml_load_string($xml);
if($elem !== false)
{
   //Process xml structure here
}
else
{
    foreach(libxml_get_errors() as $error)
    {
        error_log('Error parsing xml file ' . $file . ': ' . $error->message);
    }
}
11
adăugat
Manipularea erorilor este și mai gravă. Avertismentul oferă mai multe mesaje specifice despre o parte sursă eronată xml decât o manipulare a erorilor. Acestea din urmă afișează doar coloana, linia care este greu să localizeze partea de eroare dacă fișierul sursă xml nu este codificat în format corect.
adăugat autor Scott Chu, sursa
Acest răspuns nu împiedică avertizările, ci doar afișează mai multe informații despre erori. Pentru a preveni avertismentele, folosiți set_error_handler() ca în acest răspuns: stackoverflow.com/a/17012247/204842
adăugat autor Russell G, sursa

În situația mea, serverul care a fost partajat xml a modificat http-ul lor la https. Din acest motiv, descărcam vechiul fișier xml de cale, care în acest caz era "corupt". De aceea am avut eroarea.

Fișierele xml se încărcau perfect datorită faptului că nu am observat problema https (browser redirect).

0
adăugat
PHP România, Moldova
PHP România, Moldova
173 participanți

Vorbim despre Yii, Laravel, Symphony, MySQL, PgSQL, WP, OpenCart... Pentru confort, opriți notificările. Parteneri: https://ciupacabra.com @js_ro @node_ro @python_ro @seo_ro @Romania_Bot Offtop: @holywars_ro Joburi: @php_job @Grupuri_IT