XML در سرور

تولید اسناد XML در سمت سرور با PHP — خروجی XML برای API و تبادل داده

چرا XML را در سرور تولید کنیم؟

در معماری‌های وب، سرور معمولاً داده را به‌صورت XML یا JSON به کلاینت می‌فرستد. تولید XML در سرور مزایایی دارد:

تولید XML با PHP — روش ساده

ساده‌ترین راه، چاپ مستقیم متن XML با هدر مناسب است:

<?php
header("Content-Type: text/xml; charset=UTF-8");

echo '<?xml version="1.0" encoding="UTF-8"?>';
echo "<note>";
echo "<to>Ali</to>";
echo "<from>Sara</from>";
echo "<message>Remember the meeting!</message>";
echo "</note>";
حتماً هدر Content-Type: text/xml را ست کنید وگرنه مرورگر خروجی را HTML فرض می‌کند!

تولید XML از پایگاه داده

مثال واقعی‌تر — تبدیل رکوردهای MySQL به XML:

<?php
header("Content-Type: text/xml; charset=UTF-8");
$conn = new mysqli("localhost", "user", "pass", "shop");

$result = $conn->query("SELECT id, name, price FROM products");

echo '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
echo "<products>\n";

while ($row = $result->fetch_assoc()) {
    echo "    <product id=\"" . $row['id'] . "\">\n";
    echo "        <name>" . htmlspecialchars($row['name']) . "</name>\n";
    echo "        <price>" . $row['price'] . "</price>\n";
    echo "    </product>\n";
}

echo "</products>";
همیشه داده کاربر را با htmlspecialchars() ایمن کنید تا کاراکترهای خاص XML (&، <، >) ساختار سند را نشکنند — این کار از حمله XML Injection هم جلوگیری می‌کند!

روش استاندارد: DOMDocument

روش تمیزتر، استفاده از DOMDocument است که خودش escape کردن را انجام می‌دهد:

<?php
$doc = new DOMDocument("1.0", "UTF-8");

$root = $doc->createElement("products");
$doc->appendChild($root);

$product = $doc->createElement("product");
$product->setAttribute("id", "101");

$name = $doc->createElement("name", "Laptop & Accessories"); // خودش escape می‌کند
$price = $doc->createElement("price", "999");

$product->appendChild($name);
$product->appendChild($price);
$root->appendChild($product);

header("Content-Type: text/xml; charset=UTF-8");
echo $doc->saveXML();

خروجی نهایی

<?xml version="1.0" encoding="UTF-8"?>
<products>
    <product id="101">
        <name>Laptop & Accessories</name>
        <price>999</price>
    </product>
</products>
در درس «XML در PHP» این مباحث را عمیق‌تر با SimpleXML و DOMDocument دنبال می‌کنیم.

این مبحث بخشی از دوره آموزش کامل XML است.

ابزارهای مرتبط