pedia-learning

ورود

گذرواژه‌تان را فراموش کرده‌اید؟

ثبت نام

ثبت نام
انجمن عمومی گسترش فناوری آگو

اگر اولین بار از انجمن بازدید می کنید برای دسترسی کامل به انجمن عضو شوید بعد عضویت قادر به ارسال مطلب و شرکت در بحث خواهید داشت

ارسال پاسخ 
 
امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
PHP 5 و XML (قسمت سوم)
11-26-2013, 03:01 PM
ارسال: #1
PHP 5 و XML (قسمت سوم)
در بخش سوم اين سلسله مقالات، می خواهم در مورد 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>';
$r simplexml_load_string($s);
echo 
array_pop($r->xpath("//a[2]/text()")); 

خروجی متد ()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>';
$r simplexml_load_string($s);
echo 
array_pop($r->xpath("//a[@id=3]")); 

جدا از امکان بازيابی داده ها از اسناد XML، توسعه SimpleXML امکان تغيير و اصلاح اسناد موجود را نيز می دهد. لکن اين تغيير تنها بر روی المنتهای موجود در سند قابل انجام است و نمی توان المنت جديدی را به سند افزود. فرآيند اصلاح داده ها نيز بسيار ساده است و تمام کاری که بايد بکنيد اينست که مقدار عددی يا رشته کاراکتری جديد را به Property(مقدار المنت) يا کليد آرايه(خصیصه (Attribute)) مورد نظر نسبت دهيد. در آخر سند اصلاح شده را می توان در خروجی چاپ کرد و يا در فايلی ذخيره کرد.

کد php:
$s '<xml><b><a id="1">One</a><a id="2">Two</a></b></xml>';
$r simplexml_load_string($s);
$r->b->a[0]['id'] = 5// modify attribute of 1st <a> element
$r->b->a[1] = "Three"// modify value of 2nd <a> element
echo $r->asXML(); // print modified XML 
نقل قول این ارسال در یک پاسخ
ارسال پاسخ 


پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان


Persian Translation by MyBBIran.com - Ver: 4.1
Powered by MyBB, © 2002-2024 MyBB Group.
Theme designed by Marvel (Sidebar created by Yaldaram - Yaldaram.com)
Theme Translation by Mt Edition