SimpleXML atma uyarıları - nasıl yakalanır?

simplexml_load_string() ile neler olup bittiğini belirlerken bazı sorunlar yaşıyorum. Bazı kodları açmak için aşağıdaki kodu kullanıyorum .... Bu kodu çalıştırdığımda aşağıdaki gibi hata iletileri alıyorum:

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

Bu uyarıları nasıl yakalayacağım hakkında bir fikrin var mı? libxml_get_errors 'in etkisi yok.

                $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
Geçersiz bir .xml dosyası yükleniyor. Belki de problemi sağlayan adama delege etmek?
katma yazar FailedDev, kaynak

2 cevap

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
katma
Hata işleme daha da kötüdür. Uyarı, yanlış xml kaynak kısmı hakkında hata işleme verebileceğinden daha spesifik mesajlar verir. İkincisi, xml kaynak dosyası iyi biçimde kodlanmamışsa, yalnızca hata sütununu bulmak zor olan satırı gösterir.
katma yazar Scott Chu, kaynak
Bu cevap uyarıları önlemez, sadece hatalar hakkında daha fazla bilgi gösterir. Uyarıları önlemek için set_error_handler() kodunu bu yanıtta olduğu gibi kullanın: stackoverflow.com/a/17012247/204842
katma yazar Russell G, kaynak

Durumumda, xml paylaşan sunucu http'larını https olarak değiştirdi. Bu nedenle, bu durumda "bozuk" olan eski yol xml dosyasını indiriyorduk. Bu yüzden hata yaptık.

XML dosyaları, https sorununu (tarayıcı yönlendirmesi) fark etmediğim için mükemmel yükleniyordu.

0
katma