SimpleXMLElement->registerXPathNamespace()
(PHP 5 >= 5.2.0)
SimpleXMLElement->registerXPathNamespace() — Egy prefix/ns szövegkörnyezetet hoz létre a következő XPath keresés számára
LeÃrás
Egy prefix/ns szövegkörnyezetet hoz létre a következÅ‘ XPath keresés számára. Ez különösen akkor hasznos, ha az adott XML dokumentum létrehozója módosÃtja a névtér elÅ‘tagokat (prefix). A registerXPathNamespace létre fog hozni egy elÅ‘tagot a társÃtott névtérnek, engedélyezve a csomókhoz való hozzáférést a kód megváltoztatása nélkül, Ãgy a létrehozó által megváltoztatott névterekkel rendelkezÅ‘ fájl is könnyen elemezhetÅ‘ lesz.
Paraméterek
- prefix
-
Az XPath lekérdezésben használni kÃvánt névtér élÅ‘tag az ns paraméter számára.
- ns
-
Az XPath lekérdezésben használni kÃvánt névtér. Ennek egyeznie kell azzal névtérrel, ami az XML dokumentumban van, máskülönben az XPath lekérdezés a prefix paramétert használva nem ad eredményt.
Visszatérési értékek
Siker esetén TRUE értékkel tér vissza, ellenkező esetben FALSE értéket ad.
Példák
Example#1 Névtér előtag megváltoztatása és használata XPath lekérdezésben
<?php
$xml = <<<EOD
<book xmlns:chap="https://example.org/chapter-title">
<title>My Book</title>
<chapter id="1">
<chap:title>Chapter 1</chap:title>
<para>Donec velit. Nullam eget tellus vitae tortor gravida scelerisque.
In orci lorem, cursus imperdiet, ultricies non, hendrerit et, orci.
Nulla facilisi. Nullam velit nisl, laoreet id, condimentum ut,
ultricies id, mauris.</para>
</chapter>
<chapter id="2">
<chap:title>Chapter 2</chap:title>
<para>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Proin
gravida. Phasellus tincidunt massa vel urna. Proin adipiscing quam
vitae odio. Sed dictum. Ut tincidunt lorem ac lorem. Duis eros
tellus, pharetra id, faucibus eu, dapibus dictum, odio.</para>
</chapter>
</book>
EOD;
$sxe = new SimpleXMLElement($xml);
$sxe->registerXPathNamespace('c', 'https://example.org/chapter-title');
$result = $sxe->xpath('//c:title');
foreach ($result as $title) {
echo $title . "\n";
}
?>
A fenti XML dokumentumnak a névtér elÅ‘tagja a chap. ElképzelhetÅ‘, hogy ez a dokumentum (vagy másik hasonló) használhat c elÅ‘tagot ugyanarra a névtérre. Amiután ez megváltozott, az XPath lekérdezés nem fog többet valódi eredményeket visszaadni, ezért a lekérdezést módosÃtani kell. Inkább használd a registerXPathNamespace függvényt, és kerüld a jövÅ‘beli módosÃtását a lekérdezésnek, még akkor is, ha az XML dokumentum tulajdonosa megváltoztatja a névtér elÅ‘tagját.