PHPCon Poland 2024

SimpleXMLElement::registerXPathNamespace

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

SimpleXMLElement::registerXPathNamespaceSonraki XPath ifadesi için bir önek/isim alanı bağlamı oluşturur

Açıklama

public SimpleXMLElement::registerXPathNamespace(string $önek, string $isimalanı): bool

Sonraki XPath ifadesi için bir önek/isim alanı bağlamı oluşturur. Özellikle, XML belgenin, isim alanı öneklerinin değiştirilmesi durumunda kullanışlıdır. Bu yöntem, isim alanındaki düğümlere kodda değişiklik yapmadan erişmek amacıyla ilişkili isim alanı için bir önek oluşturur.

Bağımsız Değişkenler

önek

isimalanı ile belirtilen isim alanı için Xpath ifadesinde kullanılacak isim alanı öneki.

isimalanı

Xpath ifadesi için kullanılacak isim alanı. Belirtilen önek'in kullanıldığı XPath ifadeleri veya XML belgelerinin bir sonuç üretmesi için kullanılacak isim alanı.

Dönen Değerler

Başarı durumunda true, başarısızlık durumunda false döner.

Örnekler

Örnek 1 - Bir XPath ifadesinde kullanılacak isim alanı önekinin belirtilmesi

<?php

$xml
= <<<EOD
<book xmlns:chap="http://example.org/chapter-title">
<title>XPath Kitabı</title>
<chapter id="1">
<chap:title>1. Fasıl</chap:title>
<para>Önemli ifade çeşitlerinden biri konumsal yoldur. Bir konumsal
yol bağlamsal düğüme göreli olarak bir düğüm kümesini seçer. İfadenin
konumsal yol olduğu durumda değerlendirme sonucu, konumsal yol
tarafından seçilen düğümleri içeren düğüm kümesidir. Konumsal yollar
düğüm kümelerini süzmekte kullanılan ifadeleri dönüşümlü olarak
içerebilir. İki çeşit konumsal yol vardır: Göreli konumsal yollar ve
mutlak konumsal yollar.</para>
</chapter>
<chapter id="2">
<chap:title>2. Fasıl</chap:title>
<para>Bir göreli konumsal yol, / imleriyle birbirlerinden ayrılmış bir
veya daha fazla konumdan oluşur. Göreli konumsal yoldaki bu konumlar
soldan sağa birlikte bir bütün oluştururlar. Her konumda bağlamsal
düğüme göreli bir düğüm kümesi seçilir ve kümedeki her düğüm sonraki
konumun bağlamsal düğümü olur. Bir mutlak konumsal yol / iminden sonra
gelen bir göreli konumsal yoldan oluşur. Tek başına / imi, bağlamsal
düğümü içeren belgenin kök düğümünü seçer. Kök düğüm, bu imden sonra
gelen göreli konumsal yolun ilk konumunun bağlamsal düğümü olur.</para>
</chapter>
</book>
EOD;

$sxe = new SimpleXMLElement($xml);

$sxe->registerXPathNamespace('c', 'http://example.org/chapter-title');
$result = $sxe->xpath('//c:title');

foreach (
$result as $title) {
echo
$title . "\n";
}

?>

Yukarıdaki örneğin çıktısı:

Chapter 1
Chapter 2

Örnekte, bir isim alanının chap önekiyle bir XML belgede nasıl gösterildiğine dikkat edin. Bu belgenin (veya bir benzerinin) geçmişte, aynı isim alanı için c önekini kullanmış olduğunu varsayalım. Önek değiştiğinden XPath ifadesi beklenen sonucu vermeyecek ve ifadenin değiştirilmesi gerekecektir. İşte bu noktada registerXPathNamespace ile bu gibi önek değişikliklerinde ifadenin değiştirilmesi gereğini ortadan kaldırmak mümkün olur.

Ayrıca Bakınız

add a note

User Contributed Notes 1 note

up
5
Lea Hayes
13 years ago
Looks like you have to use registerXPathNamespace for each node when using XPath:

<?php
$xml
= simplexml_load_file($filename);

$xml->registerXPathNamespace('test', 'http://example.com');

$shopping_element = $xml->xpath('test:shopping-list');

// Breaks with out the following line:

$shopping_element->registerXPathNamespace('test', 'http://example.com');

$fruit = $shopping_element->xpath('test:fruit');
?>
To Top