SimpleXML SimpleXMLElement::registerXPathNamespace

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

SimpleXMLElement::registerXPathNamespace — 다음 XPath 쿼리에 대한 접두사/ns 컨텍스트를 만듭니다.


설명

public SimpleXMLElement::registerXPathNamespace(string $prefix, string $namespace): bool

다음 XPath 쿼리에 대한 접두사/ns 컨텍스트를 만듭니다. 특히, 이는 주어진 XML 문서의 제공자가 네임스페이스 접두사를 변경하는 경우에 유용합니다. registerXPathNamespace는 연결된 네임스페이스에 대한 접두사를 생성하여 공급자가 지시한 새 접두사를 허용하도록 코드를 변경할 필요 없이 해당 네임스페이스의 노드에 액세스할 수 있습니다.


매개변수

prefix
namespace에 지정된 네임스페이스에 대한 XPath 쿼리에서 사용할 네임스페이스 접두사입니다.
namespace
XPath 쿼리에 사용할 네임스페이스입니다. 이것은 XML 문서에서 사용 중인 네임스페이스와 일치해야 합니다. 그렇지 않으면 prefix를 사용하는 XPath 쿼리가 결과를 반환하지 않습니다.

반환 값

성공하면 true를, 실패하면 false를 반환합니다.


Examples

예제 #1 XPath 쿼리에서 사용할 네임스페이스 접두사 설정

                  
<?php

$xml = <<<EOD
<book xmlns:chap="http://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', 'http://example.org/chapter-title');
$result = $sxe->xpath('//c:title');

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

?>
                  
                

위의 예는 다음을 출력합니다.

Chapter 1
Chapter 2
                

예제에 표시된 XML 문서가 chap 접두사를 사용하여 네임스페이스를 설정하는 방법에 주목하십시오. 이 문서(또는 이와 유사한 문서)가 과거에 동일한 네임스페이스에 대해 c 접두사를 사용했을 수 있다고 상상해 보십시오. 변경되었기 때문에 XPath 쿼리는 더 이상 적절한 결과를 반환하지 않으며 쿼리를 수정해야 합니다. registerXPathNamespace를 사용하면 공급자가 네임스페이스 접두사를 변경하더라도 쿼리의 향후 수정을 방지할 수 있습니다.


기타