با عرض سلام و وقت به خیر خدمت کاربران سایت پی وی لرن و کاربرانی که دوره ی آموزش php 7 را دنبال می کنند.
در جلسه گذشته به ارائه آموزش دریافت مقدار گره به کمک SimpleXML پرداختیم. در ادامه این دوره آموزش کار با تجزیه کننده Expat در php 7 را به علاقمندان این دوره ارائه می نماییم.
در جلسه نخستین فصل XML آموختیم که چندین تکنولوژی وب مانند RSS Feeds و Podcasts در XML نوشته شده اند.
نحوه ایجاد XML ساده و آسان است.
زبان XML راهی برای ساختن داده ها و به اشتراک گذاری آن ها در وب سایت ها است.
در جلسه چهل و ششم نیز آموختیم که SimpleXML یک تجزیه کننده درختی است.
SimpleXML یک سند XML را به یک ساختار داده تبدیل می کند که می تواند از طریق مجموعه ای از آرایه ها و اشیاء تکرار شود.
جلسه چهل و هفتم آموزش کار با تجزیه کننده SimpleXML در php 7 ارائه شد.
جلسه ۴۸ نیز آموختیم که چگونه می توان مقدار گره را به کمک SimpleXML به دست آورد.
تجزیه کننده built-in XML Expat امکان پردازش اسناد XML در PHP را فراهم می کند.
تجزیه کننده Expat یک تجزیه کننده event-based است.
به XML زیر نگاه کنید:
1 | <from>Jani</from> |
یک تجزیه کننده event-based یک سند XML را به عنوان سه ساختار گزارش می کند:
توابع تجزیه کننده Expat بخشی از هسته php هستند.
برای استفاده از این توابع دیگر نیازی به نصب آن وجود ندارد.
فایل XML زیر (note.xml) در مثال ما استفاده می شود:
1 2 3 4 5 6 7 | <?xml version="1.0" encoding="UTF-8"?> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note> |
می خواهیم تجزیه کننده XML Expat را در PHP پیاده سازی کنیم، برای این کار بعضی handlers ها را برای events های مختلف XML تعریف می کنیم، و سپس فایل XML را تجزیه می نماییم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | <?php // Initialize the XML parser $parser=xml_parser_create(); // Function to use at the start of an element function start($parser,$element_name,$element_attrs) { switch($element_name) { case "NOTE": echo "-- Note --<br>"; break; case "TO": echo "To: "; break; case "FROM": echo "From: "; break; case "HEADING": echo "Heading: "; break; case "BODY": echo "Message: "; } } // Function to use at the end of an element function stop($parser,$element_name) { echo "<br>"; } // Function to use when finding character data function char($parser,$data) { echo $data; } // Specify element handler xml_set_element_handler($parser,"start","stop"); // Specify data handler xml_set_character_data_handler($parser,"char"); // Open XML file $fp=fopen("note.xml","r"); // Read data while ($data=fread($fp,4096)) { xml_parse($parser,$data,feof($fp)) or die (sprintf("XML Error: %s at line %d", xml_error_string(xml_get_error_code($parser)), xml_get_current_line_number($parser))); } // Free the XML parser xml_parser_free($parser); ?> |
تشریح مثال بالا:
۱- با استفاده از تابع ()xml_parser_create تجزیه کننده XML را نصب نمایید.
۲- توابع را ساخته تا از آن ها در event handlers های مختلف استفاده نمایید.
۳- حالا از تابع ()xml_set_element_handler برای تعیین این که کدام تابع بایستی هنگام رو به رو شدن آن با تگ های باز و بسته مورد استفاده قرار گیرد استفاده نمایید.
۴- سپس از تابع ()xml_set_character_data_handler برای تعیین این که کدام تابع بایستی هنگام رو به رو شدن آن با کاراکترها مورد استفاده قرار گیرد استفاده نمایید.
۵- فایل “note.xml” را با تابع ()xml_parse تجزیه کنید.
۶- در هنگام بروز خطا از تابع () xml_error_string استفاده کنید تا خطاهای xml را به توضیحات متنی تبدیل نمایید.
۷- تابع ()xml_parser_free را فراخوانی نمایید تا حافظه اختصاص داده شده به تابع ()xml_parser_create را آزاد کند.
در این جلسه به آموزش کار با تجزیه کننده Expat در php 7 پرداختیم.
در جلسه بعدی شما را به آموزش کار با تجزیه کننده DOM دعوت می نماییم.
با پی وی لرن همراه باشید.