XML در PHP
کار کامل با XML در PHP — SimpleXML، DOMDocument، XPath و تبدیل به JSON
PHP و XML
PHP یکی از بهترین پشتیبانیهای XML را بین زبانها دارد. در این درس مرور کامل میکنیم:
۱. خواندن با SimpleXML
// از فایل
$xml = simplexml_load_file("books.xml");
// از رشته
$xml = simplexml_load_string($xmlString);
// دسترسی زنجیرهای
echo $xml->book[0]->title;
echo $xml->book[0]['category']; // ویژگی
// پیمایش
foreach ($xml->book as $book) {
echo $book->title . ": " . $book->price . PHP_EOL;
}
۲. XPath در PHP
$xml = simplexml_load_file("books.xml");
// همه کتابهای وب
$webBooks = $xml->xpath('//book[@category="web"]');
// کتابهای گران
$expensive = $xml->xpath("//book[price>30]");
foreach ($expensive as $book) {
echo $book->title . PHP_EOL;
}
۳. ساخت XML با SimpleXML
$xml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><library/>');
$book = $xml->addChild("book");
$book->addAttribute("category", "programming");
$book->addChild("title", "XML Guide");
$book->addChild("price", "45");
$xml->asXML("library.xml"); // ذخیره در فایل
echo $xml->asXML(); // چاپ
۴. DOMDocument — قدرت کامل
$doc = new DOMDocument("1.0", "UTF-8");
$doc->formatOutput = true; // خروجی مرتب با تورفتگی!
$root = $doc->createElement("library");
$doc->appendChild($root);
$book = $doc->createElement("book");
$book->setAttribute("id", "1");
$title = $doc->createElement("title", "XML Guide");
$book->appendChild($title);
$root->appendChild($book);
echo $doc->saveXML();
۵. ویرایش سند موجود
$doc = new DOMDocument();
$doc->load("books.xml");
// تغییر متن
$titles = $doc->getElementsByTagName("title");
$titles->item(0)->nodeValue = "عنوان جدید";
// حذف
$books = $doc->getElementsByTagName("book");
$node = $books->item(1);
$node->parentNode->removeChild($node);
$doc->save("books.xml");
۶. تبدیل XML به JSON
$xml = simplexml_load_string($xmlString);
$json = json_encode($xml, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
echo $json;
ترفند
json_encode با SimpleXML سریعترین راه تبدیل XML به JSON در PHP است — برای APIهایی که ورودی XML و خروجی JSON دارند عالی است!۷. تبدیل JSON به XML
function arrayToXml($data, SimpleXMLElement $xml) {
foreach ($data as $key => $value) {
if (is_array($value)) {
$child = $xml->addChild($key);
arrayToXml($value, $child);
} else {
$xml->addChild($key, htmlspecialchars($value));
}
}
return $xml;
}
$array = json_decode($jsonString, true);
$xml = arrayToXml($array, new SimpleXMLElement('<root/>'));
echo $xml->asXML();
۸. اعتبارسنجی با XSD
$doc = new DOMDocument();
$doc->load("books.xml");
if ($doc->schemaValidate("books.xsd")) {
echo "سند معتبر است ✅";
} else {
echo "سند نامعتبر است ❌";
}
۹. مدیریت خطا
libxml_use_internal_errors(true);
$xml = simplexml_load_string($badXml);
if ($xml === false) {
foreach (libxml_get_errors() as $error) {
echo "خطا در خط {$error->line}: {$error->message}" . PHP_EOL;
}
libxml_clear_errors();
}
انتخاب ابزار در PHP
| کار | ابزار پیشنهادی |
|---|---|
| خواندن ساده | SimpleXML |
| پرسوجو | SimpleXML + xpath() |
| ساخت و ویرایش پیچیده | DOMDocument |
| فایل حجیم | XMLReader |
| اعتبارسنجی | DOMDocument + schemaValidate |
این مبحث بخشی از دوره آموزش کامل XML است.