এক্সএমএল সংকলন ত্রুটির জন্য ত্রুটি বার্তাগুলি উন্নত করা


14

ম্যাজেন্টো ত্রুটি প্রদর্শনের বিষয়ে মোটামুটি প্রতিরক্ষামূলক (যেমনটি হওয়া উচিত)। যখন বিকাশকারী মোড সক্ষম থাকে (যেমন এটি বিকাশের সময় হওয়া উচিত) তখন অ্যাপ্লিকেশনটি রানটাইম ত্রুটির প্রতিক্রিয়াটিকে ব্যবহারকারীর কাছে বুদ্বুদ দেয়। এক্সএমএল সংকলনের ত্রুটির জন্য যদিও এই প্রতিক্রিয়াটি মোটামুটি অকেজো:

মারাত্মক ত্রুটি: সতর্কতা: সরল xML_load_string () বার্তা সহ অপ্রকাশিত ব্যতিক্রম 'ব্যতিক্রম': সত্তা: লাইন 4: পার্সার ত্রুটি: [...] / lib / ভারিইন / সিম্প্লেক্সিল / কনফিগারে ডকুমেন্টের শুরুতে এক্সএমএল ঘোষণা অনুমোদিত allowed পিএইচপি 510 'তে লাইনটিতে [...] অ্যাপ্লিকেশন / কোড / কোর / ম্যাজ / কোর / ফাংশন.পিএফ 245 লাইনে

স্ট্রিংয়ের সাথে Varien_Simplexml_Config::loadFile()উপস্থাপন থেকে ফলাফল ::loadString()যা পার্স করা যায় না:

public function loadFile($filePath)
{
    if (!is_readable($filePath)) {
        //throw new Exception('Can not read xml file '.$filePath);
        return false;
    }

    $fileData = file_get_contents($filePath);
    $fileData = $this->processFileData($fileData);
    return $this->loadString($fileData, $this->_elementClass);
}

ব্যবহার সহ বেশ কয়েকটি সম্ভাব্য সমাধান রয়েছে libxml_use_internal_errors, তবে কলিং পদ্ধতিটি $filePathপরমকে যোগাযোগ করে না , সুতরাং প্রসঙ্গটি হারিয়ে যাবে। একটি সম্ভাবনা আরও সুস্পষ্ট ব্যতিক্রম নিক্ষেপ করা হবে:

public function loadFile($filePath)
{
    if (!is_readable($filePath)) {
        //throw new Exception('Can not read xml file '.$filePath);
        return false;
    }

    $fileData = file_get_contents($filePath);
    $fileData = $this->processFileData($fileData);
    try{
        return $this->loadString($fileData, $this->_elementClass);
    }
    catch (Exception $e){
        Mage::throwException (
            sprintf(
                "%s: error parsing %s:\r\n%s",
                __METHOD__,
                $filePath,
                $e->getMessage()
            )
        );
    }
}

এটি অন্তত নিম্নলিখিতগুলির মতো আউটপুট সরবরাহ করে:

মারাত্মক ত্রুটি: 'ভারিএনসিম্প্লেক্সল এমএল কনফিগ :: লোডফাইলে: ত্রুটি বিশ্লেষণ [...] / অ্যাপ / কোড / স্থানীয় / কিছু / উদাহরণ / ইত্যাদি / কনফিগারেশন : এমপি : সতর্কতা: সরল xML_load_string (): সত্ত্বা: লাইন 4 : পার্সার ত্রুটি: এক্সএমএল ঘোষণার অনুমতি কেবলমাত্র [...] / lib / ভারিইন / সিম্প্লেক্সিল / কনফিগারেশন.এফপি 594 লাইনে 534 লাইনে [...] / অ্যাপ্লিকেশন / ম্যাজ.এফপিতে ডকুমেন্টের শুরুতে অনুমোদিত হয়েছিল

এখানে বিবেচনা করার জন্য কিছু সুবিধা / অসুবিধাগুলি / বিকল্প পদ্ধতি আছে?


আমি মনে করি কোনও সম্প্রদায়ের মডিউলটির মতো উন্নত করতে খারাপ কিছু ত্রুটি বার্তাগুলি মহাকাব্য হবে। অন্যান্য ত্রুটি বার্তাটি যা খুব খারাপ তা হ'ল এটি যখন কোনও প্রদত্ত পিএইচটিএমএল খুঁজে না পায়।
kalenjordan

উত্তর:


14

আমি সবসময় যে পদ্ধতি গ্রহণ করি তা হ'ল একটি সাধারণ এক-লাইনার:

find . -type f -name '*.xml' -exec xmllint --noout {} \;

libxML2- ব্যবহারের প্রয়োজন যদিও ...


1
এবং ডাব্লুআইএসআই ফাইলগুলিতে মিথ্যা পজিটিভ দেখায়:namespace error : xmlns:typens: 'urn:{{var wsdl.name}}' is not a valid URI
অ্যালেক্স

কার্যকারণ: find . -type f -not -name 'wsi.xml' -not -name 'wsdl.xml' -not -name 'wsdl2.xml' -name '*.xml' -exec xmllint --noout {} \;(উত্তরটি সম্পাদনা করতে নির্দ্বিধায়)
অ্যালেক্স

Config.xml জন্য: আমি একটি পাখাfind . -type f -name 'config.xml' -exec xmllint --noout {} \;
benmarks

@ অ্যালেক্স আমি একই ত্রুটি পাচ্ছি, আপনার কি এটির জন্য ঠিক আছে?
প্রজাপতি

আমার পোস্ট করা লাইনটি আপনি চেষ্টা করেছেন?
অ্যালেক্স
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.