אתה נמצא כאן מדריכים  >>  המלצות ספרים - DOM-XML  >>  ניתוח קובץ ה-XML

ניתוח קובץ ה-XML

ניתוח קובץ XML באמצעות המודול של DOM-XML הינו פשוט ביותר, משום שאת "העבודה הקשה" של ניתוח הקובץ עושים האובייקטים של המודול בעצמם. כל שנותר לך לעשות הוא לדלות את המידע הרצוי מתוך היררכיית האובייקטים של DOM. השימוש במודול הזה חוסך זמן ומקל הרבה על התכנות וניתוח הקובץ, אך מצד שני הוא מכרסם די הרבה זיכרון, ולכן מגביל את השימוש בו לקבצי XML לא גדולים מידי.

נכתוב קובץ include בו נגדיר פונקציות לניתוח קובץ ה-XML. הפונקציה תקבל מחרוזת של מסמך ה-XML, היא תנתח אותו באמצעות DOM-XML ובסוף תחזיר מערך עם כל הנתונים (שם המדווח, מפתח קיבוץ ורשימת ספרים ממויינים).

file name: books_xml_parse_func.inc
<?php
  function XML_ParseRecommends($xml_file
/*קובץ ה-XML לפתיחה.*/
)
  {
     $xml_doc=domxml_open_file($xml_file);
/*פותח את קובץ ה-XML ויוצר ממנו
אובייקט של מסמך XML.
*/

     if (!$xml_doc)
/*אם קובץ ה-XML לא נותח כראוי.
אירעה שגיאה.
*/

        return false;
  
     $xml_recommends=$xml_doc->document_element();
/*מחזיר את אלמנט השורש.*/

  
     $xml_reporter=current($xml_recommends->get_elements_by_tagname("REPORTER")
/*מחזיר מערך של כל האלמנטים
ששם התג שלהם הוא REPORTER.
*/
);
     $reporter=utf8_decode($xml_reporter->get_content());
/*מפענחים את המחרוזת המקורית מתוך
הקידוד של UTF8.
*/

  
     $xml_groupby=current($xml_recommends->get_elements_by_tagname("GROUPBY"));
     $groupby=$xml_groupby->get_attribute("key");
/*מחזיר את ערכו של המאפיין key, מפתח הקיבוץ.*/

     $xml_groups=$xml_groupby->child_nodes();
/*מחזיר מערך של כל האלמנטים הילדים שלו - הקבוצות.*/

     $books=array();
     foreach ($xml_groups as $xml_group)
     {
        $attr_value=utf8_decode
/*מפענחים את המחרוזת המקורית מתוך
הקידוד של UTF8.
*/
($xml_group->get_attribute("value")
/*מחזיר את ערכו של המאפיין value.*/
);
        $xml_books=$xml_group->child_nodes();
/*מחזיר מערך של כל האלמנטים הילדים שלו - הספרים.*/

        foreach ($xml_books as $xml_book)
        {
           $xml_elems=$xml_book->child_nodes();
/*מחזיר מערך של כל האלמנטים הילדים שלו - נתוני הספר.*/

           $elems=array();
           foreach ($xml_elems as $xml_elem)
/*עוברים על כל הנתונים של הספר,
ושומרים את כל המאפיינים במערך.
*/

              $elems[$xml_elem->tagname()
/*מחזיר את השם של התג, האלמנט.*/
]=utf8_decode($xml_elem->get_content());
           $books[$attr_value][]=$elems;
/*שומר את נתוני הספר במערך הספרים.
כל ספר במקום המתאים לו עפ"י מפתח הקיבוץ.
*/

        }
     }
  
     $arr_info=array(
/*יוצר את מערך הנתונים שהפונקציה תחזיר.*/

                          "reporter"=>$reporter
/*שם המדווח.*/
,
                          "groupby"=>$groupby
/*מפתח הקיבוץ.*/
,
                          "books"=>$books
/*מערך הספרים והקבוצות שלהם.*/

                       );
  
     return $arr_info;
  }
?>

גם בקובץ זה אנו משתמשים במודול DOM-XML, לכן גם בתחילת קובץ זה יש צורך לבדוק האם המודול נטען למנוע ה-PHP (בדיוק כמו בקובץ books_xml_create_func.inc).


תגובות בנושא


לדף הקודםיצירת קובץ ה-XML -הקודם
לתחילת הדףלתחילת הדף
הבא- הזנת נתונים לקובץ ה-XMLלדף הבא