SimpleXML चेतावनी फेंकना - कैसे पकड़ें?

मुझे simplexml_load_string() के साथ क्या चल रहा है यह निर्धारित करने में कुछ परेशानी हो रही है। मैं कुछ एक्सएमएल प्रस्तुत करने के लिए नीचे दिए गए कोड का उपयोग कर रहा हूं .... जब मैं इस कोड को चलाता हूं तो मुझे त्रुटि संदेश मिलते हैं जैसे:

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

मैं इन चेतावनियों को कैसे पकड़ सकता हूं इस पर कोई विचार? libxml_get_errors का कोई प्रभाव नहीं पड़ता है।

                $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
आप एक अवैध .xml फ़ाइल लोड कर रहे हैं। शायद उस आदमी को समस्या का प्रतिनिधित्व करें जो इसे प्रदान कर रहा है?
जोड़ा लेखक FailedDev, स्रोत

2 उत्तर

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
जोड़ा
त्रुटि प्रबंधन भी बदतर है। चेतावनी त्रुटि संभाल देने से गलत xml स्रोत भाग के बारे में अधिक विशिष्ट संदेश देती है। उत्तरार्द्ध केवल कॉलम, लाइन दिखाता है जो त्रुटि भाग का पता लगाने में मुश्किल है यदि xml स्रोत फ़ाइल को अच्छी तरह से प्रारूप में कोडित नहीं किया गया है।
जोड़ा लेखक Scott Chu, स्रोत
यह उत्तर चेतावनियों को रोकता नहीं है, यह केवल त्रुटियों के बारे में अधिक जानकारी प्रदर्शित करता है। चेतावनियों को रोकने के लिए, इस उत्तर में set_error_handler() का उपयोग करें: stackoverflow.com/a/17012247/204842
जोड़ा लेखक Russell G, स्रोत

मेरे परिस्थिति सर्वर में जो एक्सएमएल साझा कर रहा था, उनके http को https में बदल दिया। इसके कारण हम पुराने पथ एक्सएमएल फ़ाइल डाउनलोड कर रहे थे, जो इस मामले में "दूषित" था। यही कारण है कि हमें त्रुटि थी।

एक्सएमएल फाइलें पूरी तरह से लोड हो रही थीं क्योंकि मैंने https समस्या (ब्राउज़र रीडायरेक्ट) को नहीं देखा था।

0
जोड़ा