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
'local name: ', $element->localName, ', prefix: ', $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 "Количество элементов. The number of elements: ".$domList->length."<br />";// 2 (不是 3)
for ($i=0; $i<$domList->length; $i++)
{echo
"Элемент $i. The element $i: ".$domList->item($i)->tagName."<br />";
}
/*
在 PHP 5.2.9-2 和 5.2.17 中测试
上面的示例将输出:
Количество элементов. The number of elements: 2
Элемент 0. The element 0: htm:body
Элемент 1. The element 1: htm:img

Вывод. Не найден элемент span
Conclusion. Not found span element
*/
?>
To Top