النتائج 1 إلى 7 من 7

الموضوع: من يستطيع كتابة كود تحويل من xml الى array

  1. #1
    عضو شرف
    تاريخ التسجيل
    Apr 2002
    المشاركات
    1,379

    Question من يستطيع كتابة كود تحويل من xml الى array



    المطلوب هو تحويل مستند xml الى مصفوفه بنفس تقسيم المستند وتكون المفاتيح بنفس الوسوم , الشرط الوحيد هو عدم استخدام دوال xml جميعها , وكتابة مفسر parser يقوم بالعملية.
    مثال ملف XML
    كود PHP:
    <xml>
        <
    data>
            <
    item type="type1">Test Item</item>
            <
    item>Test Item<time>data</time></item>
        </
    data>
    </
    xml
    الناتج
    كود PHP:
    Array
    (
        [
    xml] => Array
            (
                [
    name] => xml
                
    [text] => 
       
                [
    elements] => Array
                    (
                        [
    0] => Array
                            (
                                [
    name] => data
                                
    [text] => 
           
                                [
    elements] => Array
                                    (
                                        [
    0] => Array
                                            (
                                                [
    name] => item
                                                
    [attributes] => Array
                                                    (
                                                        [
    type] => type1
                                                    
    )

                                                [
    text] => Test Item
                                            
    )

                                        [
    1] => Array
                                            (
                                                [
    name] => item
                                                
    [text] => Test Ite
                                                
    [elements] => Array
                                                    (
                                                        [
    0] => Array
                                                            (
                                                                [
    name] => time
                                                                
    [text] => data
                                                            
    )

                                                    )

                                            )

                                    )

                            )

                    )

            )








    __________________
    ضيف الله العتيبي مبرمج حر و مهندس معتمد من زيند (ZCE)
    الاتصال: daif@daif.net او جوال: 0556639884
    الخدمات: تقديم استشارات برمجيه, تطوير بوابات/خدمات إلكترونيه للقطاع العام او الخاص .


  2. #2


    أستاذ ضيف هل بحثت في phpclasses اظن اني رأيت كلاس يقوم بما تريده
    سأرفعه اذا عثرت عليه

    تحياتي





    __________________
    أحمد أبو النصر
    Junior php Developer
    +20166196074

  3. #3
    عضو جديد
    تاريخ التسجيل
    Aug 2004
    المشاركات
    12


    أستاذ ضيف أعتقد أن تحويل ملف xml الى مصفوفة كما في المثال دون استخدام دوال معالجة ال xml يعتبر أمر صعب - لكن يمكن تنفيذه -
    وذلك لأمرين هما: عدم معرقة عدد ال levels الموجودة داخل الملف ، و استهلاك موارد السيرفر مع كثرة زوار الموقع.
    لذلك لماذل لا تستخدم ال SimpleXML و من ثم المعالجة بال XSLTProcessor ؟
    اذا لم تفلح هذة الطريقة مع حضرتك سوف أقوم بعمل parser لهذا الغرض باذن الله






  4. #4
    عضو نشيط جدا
    تاريخ التسجيل
    Sep 2006
    المشاركات
    547


    عذرا أخي العزيز ضيف للجواب المقتضب التالي، لكن أتمنى أن يعطيك بداية الخيط. إن كان الملف كبير فإياك واستخدام SimpleXML لأنه سيقتل الجهاز لديك من حيث احتلال موارده. إن السيناريو الذي تعرضه يقدح في داخلي شعورا بأن مكتبة XML Parser Functions:
    PHP: XML Parser Functions - Manual
    هي الأنسب في حالتك، حيث عليك أنت أن تحدد الإجراء الذي تريد تنفيذه عند فتح أو إغلاق كل XML Tag

    صراحة ليس لدي الوقت حاليا لكتابة التابع الذي تطلبه، لكني سبق ان كتبت برنامجا صغيرا يستورد بيانات من XML كبير ليبني بها جدول ضمن قاعدة البيانات، ربما يساعدك هذا المثال على تلمس أسس استخدام توابع هذه المكتبة التي حدثتك عنها أعلاه (أنظر البرنامج في أسفل الصفحة):

    Life Arabic - English Dictionary





    __________________
    خالد الشمعة - Khaled Al-Shamaa
    PHP and Arabic language

  5. #5
    عضو سوبر نشيط
    تاريخ التسجيل
    May 2007
    المشاركات
    613


    قد تجد ضالتك في PHP Classes
    كود:
    http://www.phpclasses.org/browse/package/1598.html
    http://www.phpclasses.org/browse/package/1826.html
    http://www.phpclasses.org/browse/package/2286.html
    http://www.phpclasses.org/browse/package/3598.html
    http://www.phpclasses.org/browse/package/2474.html
    http://www.phpclasses.org/browse/package/1390.html
    http://www.phpclasses.org/browse/package/2938.html
    http://www.phpclasses.org/browse/package/3304.html
    http://www.phpclasses.org/browse/package/1424.html
    http://www.phpclasses.org/browse/package/4133.html







  6. #6
    عضو شرف
    تاريخ التسجيل
    Apr 2002
    المشاركات
    1,379


    شكرا للجميع , بالفعل واجهة صعوبات حول معالجة ملف لكن مع هذه الاصناف اتضحت الفكره





    __________________
    ضيف الله العتيبي مبرمج حر و مهندس معتمد من زيند (ZCE)
    الاتصال: daif@daif.net او جوال: 0556639884
    الخدمات: تقديم استشارات برمجيه, تطوير بوابات/خدمات إلكترونيه للقطاع العام او الخاص .

  7. #7
    عضو جديد
    تاريخ التسجيل
    May 2007
    المشاركات
    3


    الأخ العزيز, أستخدم هذه الدالة في بعض الأحيان, من خلال استدعاء ملف XML بدالة SimpleXML
    ومن ثم تحويل الملف الى مصفوفة....
    كود PHP:
    <?php
    //Function: Converting XML Object to Array  

    $sim_str convertXmlObjToArr($sim_xml,$arr_xml);
    print_r($arr_xml);

    function 
    convertXmlObjToArr($obj, &$arr)
    {
        
    $children $obj->children();
        foreach (
    $children as $elementName => $node)
        {
            
    $nextIdx count($arr);
            
    $arr[$nextIdx] = array();
            
    $arr[$nextIdx]['@name'] = strtolower((string)$elementName);
            
    $arr[$nextIdx]['@attributes'] = array();
            
    $attributes $node->attributes();
            foreach (
    $attributes as $attributeName => $attributeValue)
            {
                
    $attribName strtolower(trim((string)$attributeName));
                
    $attribVal trim((string)$attributeValue);
                
    $arr[$nextIdx]['@attributes'][$attribName] = $attribVal;
            }
            
    $text = (string)$node;
            
    $text trim($text);
            if (
    strlen($text) > 0)
            {
                
    $arr[$nextIdx]['@text'] = $text;
            }
            
    $arr[$nextIdx]['@children'] = array();
            
    convertXmlObjToArr($node$arr[$nextIdx]['@children']);
        }
        return;
    }

    ?>
    يمكنك التعديل كما تريد للتحكم في الخرج.

    بالتوفيق










ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | دليل الكويت العقاري | مقروء | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض