فضای نام ها (getDocNamespaces)
«فضای نام XML (XML Namespace)» یک برچسب دامنه دار برای تگ هاست. با آن، تگ های هم نام قاطی نمی شوند. تابع getDocNamespaces() فهرست فضای نام ها را از سند می دهد. خیلی برای پردازش امن لازم است.
کاربرد getDocNamespaces در SimpleXML
این تابع، آرایه ای از «پیشوند ← نشانی» برمی گرداند. بنابراین، می فهمیم هر پیشوند به کدام URI وصل است.
نگارش (Syntax) و پارامترها
SimpleXMLElement::getDocNamespaces(recursive, from_root)
- recursive (بولی): اگر
TRUEباشد، همه فضای نام ها را می آورد. - from_root (بولی): اگر
TRUEباشد، از ریشه بررسی می کند.
مثال 1: فضای نام های تعریف شده در ریشه
ابتدا شی SimpleXMLElement را بساز. سپس فضای نام های ریشه را بگیر.
<?php
$xml = <<<XML
<?xml version="1.0" standalone="yes"?>
<cars xmlns:c="http://w3schools.com/ns">
<c:car id="1">Volvo</c:car>
<c:car id="2">BMW</c:car>
<c:car id="3">Saab</c:car>
</cars>
XML;
$sxe = new SimpleXMLElement($xml);
$ns = $sxe->getDocNamespaces();
print_r($ns);
?>
مثال 2: گرفتن همه فضای نام ها به صورت بازگشتی
وقتی داخل گره های فرزند هم فضای نام داریم، recursive را TRUE بده.
<?php
$xml = <<<XML
<?xml version="1.0" standalone="yes"?>
<cars xmlns:c="http://w3schools.com/ns">
<c:car id="1">Volvo</c:car>
<c:car id="2">BMW</c:car>
<c:car id="3" a:country="Sweden" xmlns:a="http://w3schools.com/country">Saab</c:car>
</cars>
XML;
$sxe = new SimpleXMLElement($xml);
$ns = $sxe->getDocNamespaces(TRUE);
var_dump($ns);
?>
گام های عملی سریع
- XML را در SimpleXMLElement بارگذاری کن.
getDocNamespaces()را صدا بزن.- آرایه پیشوندها و URIها را بخوان.
- در صورت نیاز،
recursiveرا فعال کن.
نکته ها و پیوندها
نکته: همیشه به فضای نام هنگام XPath یا پیمایش دقت کن.
نکته: برای پیمایش گره ها از children استفاده کن. برای دیدن ویژگی ها attributes مفید است. برای خروجی گرفتن از XML هم asXML را ببین.
منبع: W3Schools: getDocNamespaces() · مرجع کلی: SimpleXML Reference
جمع بندی سریع
- فضای نام از تگ ها محافظت می کند.
getDocNamespaces()لیست فضای نام ها را می دهد.recursiveفضای نام های درونی را می آورد.from_rootبررسی را از ریشه تنظیم می کند.