سیمپل XML: دریافت (SimpleXML-Get)
اینجا «دریافت مقادیر SimpleXML» را تمرین می کنیم. SimpleXML افزونه PHP برای کار با XML است. منظور از «گره (Node)» همان تگ هاست. همچنین «ویژگی (Attribute)» خاصیت داخل تگ است.
گرفتن مقدار گره ها از فایل note.xml
با simplexml_load_file() فایل خوانده می شود. سپس گره ها مستقیم صدا زده می شوند.
<?php
$xml = simplexml_load_file("note.xml") or die("Error: Cannot create object");
echo $xml->to . "<br>";
echo $xml->from . "<br>";
echo $xml->heading . "<br>";
echo $xml->body;
?>
گرفتن مقدار گره های مشخص
با ایندکس می توان گره خاص را گرفت. اینجا عنوانِ دو کتاب اول را می گیریم.
<?php
$xml = simplexml_load_file("books.xml") or die("Error: Cannot create object");
echo $xml->book[0]->title . "<br>";
echo $xml->book[1]->title;
?>
حلقه روی گره ها و چاپ فیلدها
با children() روی کتاب ها می چرخیم. سپس عنوان، نویسنده، سال و قیمت را چاپ می کنیم.
<?php
$xml = simplexml_load_file("books.xml") or die("Error: Cannot create object");
foreach ($xml->children() as $books) {
echo $books->title . ", ";
echo $books->author . ", ";
echo $books->year . ", ";
echo $books->price . "<br>";
}
?>
گرفتن مقدار ویژگی ها (Attributes)
ویژگی با براکت [] گرفته می شود. اینجا category و lang را می خوانیم.
<?php
$xml = simplexml_load_file("books.xml") or die("Error: Cannot create object");
echo $xml->book[0]['category'] . "<br>";
echo $xml->book[1]->title['lang'];
?>
حلقه روی ویژگی ها
روی همه کتاب ها می چرخیم و مقدار ویژگی lang را چاپ می کنیم.
<?php
$xml = simplexml_load_file("books.xml") or die("Error: Cannot create object");
foreach ($xml->children() as $books) {
echo $books->title['lang'];
echo "<br>";
}
?>
گام های عملی
- فایل XML را آماده کن؛ مثلاً
books.xml. - با
simplexml_load_file()آن را بارگذاری کن. - گره ها یا ویژگی ها را مستقیم بخوان.
نکته: اگر ساختار بزرگ است، مراقب حافظه باش. برای اسناد بزرگ، روش های رویدادمحور مناسب ترند.
ادامه مسیر
- سیمپل XML: خواندن برای بارگذاری از رشته و فایل.
- تجزیه گر Expat برای پردازش رویدادمحور.
جمع بندی سریع
- SimpleXML دسترسی مستقیم به گره ها می دهد.
- ویژگی ها با
[]خوانده می شوند. - حلقه با
children()ساده است. - روی اسناد بزرگ، احتیاط در کارایی لازم است.