PHP Conference Japan 2024

DOMDocument::getElementsByTagNameNS

(PHP 5, PHP 7, PHP 8)

DOMDocument::getElementsByTagNameNS搜尋指定命名空間中所有具有指定標籤名稱的元素

說明

public DOMDocument::getElementsByTagNameNS(?string $namespace, string $localName): DOMNodeList

傳回一個包含所有具有指定本地名稱和命名空間 URI 的元素的 DOMNodeList

參數

namespace

要比對的元素之命名空間 URI。特殊值 "*" 會比對所有命名空間。傳入 null 會比對空命名空間。

localName(本地名稱)

要比對的元素之本地名稱。特殊值 "*" 會比對所有本地名稱。

回傳值

一個新的 DOMNodeList 物件,包含所有符合的元素。

更新日誌

版本 說明
8.0.3 namespace 現在可以為 null。

範例

範例 #1 取得所有 XInclude 元素

<?php

$xml
= <<<EOD
<?xml version="1.0" ?>
<chapter xmlns:xi="http://www.w3.org/2001/XInclude">
<title>Books of the other guy..</title>
<para>
<xi:include href="book.xml">
<xi:fallback>
<error>xinclude: book.xml not found</error>
</xi:fallback>
</xi:include>
<include>
This is another namespace
</include>
</para>
</chapter>
EOD;
$dom = new DOMDocument;

// 載入上方定義的 XML 字串
$dom->loadXML($xml);

foreach (
$dom->getElementsByTagNameNS('http://www.w3.org/2001/XInclude', '*') as $element) {
echo
'本地名稱: ', $element->localName, ', 前綴: ', $element->prefix, "\n";
}
?>

上述範例將輸出:

local name: include, prefix: xi
local name: fallback, prefix: xi

另請參閱

新增註記

使用者貢獻的註記 1 則註記

RiKdnUA at mail dot ru
9 年前
<?php
ini_set
("display_errors","on"); error_reporting(-1);
$doc="<?xml version='1.0' encoding='WINDOWS-1251'?>
<htm:body xmlns:htm='w3.org'>
<span>Text</span>
<htm:img htm:src='imgSrc'/>
</htm:body>"
;
$dom = new DOMDocument('1.0','WINDOWS-1251');
$dom->preserveWhiteSpace=false;
$dom->loadXML($doc);
$domList=$dom->getElementsByTagNameNS('*','*');//所有命名空間,所有本地名稱
echo "元素數量: ".$domList->length."<br />";// 2 (非 3)
for ($i=0; $i<$domList->length; $i++)
{echo
"元素 $i: ".$domList->item($i)->tagName."<br />";
}
/*
在 PHP 5.2.9-2 和 5.2.17 中測試
以上範例將輸出:
元素數量: 2
元素 0: htm:body
元素 1: htm:img

輸出:找不到 span 元素
*/
?>
To Top