PHP 5 و XML (قسمت سوم) - نسخهی قابل چاپ +- انجمن عمومی گسترش فناوری آگو (http://forums.ago.ir) +-- انجمن: انجمن های عمومی گسترش فناوری آگو (/forumdisplay.php?fid=1) +--- انجمن: برنامه نویسی (/forumdisplay.php?fid=13) +--- موضوع: PHP 5 و XML (قسمت سوم) (/showthread.php?tid=2203) |
PHP 5 و XML (قسمت سوم) - agotd - 11-26-2013 03:01 PM در بخش سوم اين سلسله مقالات، می خواهم در مورد XPath صحبت کنم. روش ديگری که برای بازيابی يک المنت خاص از درخت DOM وجود دارد استفاده از زبان پرس و جوی XPath می باشد که خوشبختانه توسط توسعه SimpleXML پشتيبانی می شود. XPath زبانی برای آدرس دهی اجزای يک سند XML است که توسط کنسرسيوم وب جهانی(W3C) به تصويب رسيده است. اين زبان يک سند XML را مانند يک سيستم فايل در نظر می گيرد که هر المنت می توانند نقش فايل يا دايرکتوری را بازی کنند و همانطور که برای دستيابی يا اجرای يک فايل مسير آن را در سیستم فایل مشخص می کنيم، برای دسترسی به يک المنت هم به شيوه ای مشابه عمل می کنيم. همچنين به کمک XPath می توان يک المنت خاص در سند XML را بدون توجه به مکان آن جستجو کرد. در تکه کد زير از طريق اين زبان به محتويات متنی دومین المنت a دسترسی خواهيم داشت؛ نکته ای که مد نظر بايد قرار داد اين است که در XPath بر خلاف آرایه های PHP، شمارش المنتها از عدد یک شروع می شود نه صفر. کد php: $s = '<xml><b><a id="1">One</a><a id="3">Two</a></b></xml>'; خروجی متد ()xpath آرايه ای از المنتهایی است که با مسير داده شده مطابقت دارند و در صورتی که هيچ موردی يافت نشود، مقدار False برگردانده می شود. هر المنت يا عنصر آرايه، يک آبجکت بوده که حاوی مقادير المنت تطبیق داده شده از سند XML است. در مثال بالا مقدار "Two" چاپ می شود. جستجو به دنبال المنتی که خصیصه (Attribute) آن دارای مقدار معینی است هم همانطور که در تکه کد پایین مشاهده می کنید به سادگی امکان پذیر است. SimpleXML با بهره گیری از تسهیلاتی که کتابخانه libxml2 در اختیار گذاشته، در سند XML به دنبال المنت(های) a ای می گردد که دارای خصیصه id بوده و مقدار این خصیصه برابر با ۳ باشد. دقت داشته باشید که وقتی از زبان پرس و جوی XPath برای جستجو در سند XML استفاده می کنید، بخصوص اسناد بزرگ، این عمل با کندی صورت می پذیرد. بنابراین اگر از مکان داده های خود در سند XML اطلاع دارید بهتر است همانطور که در مثالهای بالا بررسی شد به طور دستی مسیر را مشخص کنید. کد php: $s = '<xml><b><a id="1">One</a><a id="3">Two</a></b></xml>'; جدا از امکان بازيابی داده ها از اسناد XML، توسعه SimpleXML امکان تغيير و اصلاح اسناد موجود را نيز می دهد. لکن اين تغيير تنها بر روی المنتهای موجود در سند قابل انجام است و نمی توان المنت جديدی را به سند افزود. فرآيند اصلاح داده ها نيز بسيار ساده است و تمام کاری که بايد بکنيد اينست که مقدار عددی يا رشته کاراکتری جديد را به Property(مقدار المنت) يا کليد آرايه(خصیصه (Attribute)) مورد نظر نسبت دهيد. در آخر سند اصلاح شده را می توان در خروجی چاپ کرد و يا در فايلی ذخيره کرد. کد php: $s = '<xml><b><a id="1">One</a><a id="2">Two</a></b></xml>'; |