如何在 PHP 中将元素添加到 DOMNodeList


How to add elements to DOMNodeList in PHP?

有没有办法创建我自己的 DOMNodeList? 例如:

$doc = new DOMDocument(); 
$elem = $doc->createElement('div');
$nodeList = new DOMNodeList; 
$nodeList->addItem($elem); // ?

我的想法是扩展 DOMDocument 类,添加一些有用的方法,将数据作为 DOMNodeList 返回。

是否可以在不编写我自己的 DOMNodeList 类版本的情况下做到这一点?

您无法通过其公共接口将项目添加到 DOMNodeList。但是,DOMNodeList 在连接到 DOM 树时是实时集合,因此将子元素添加到 DOMElement 将在该元素的子集合(即 DOMNodeList)中添加一个元素:

$doc = new DOMDocument();
$nodelist = $doc->childNodes; // a DOMNodeList
echo $nodelist->length;       // 0
$elem = $doc->createElement('div');
$doc->appendChild($elem);
echo $nodelist->length;       // 1

您说要添加"一些将数据作为 DOMNodeList 返回的有用方法"。在 DOMDocument 的上下文中,这就是 XPath 所做的。它允许您查询文档中的所有节点,并在 DOMNodeList 中返回它们。也许这就是你要找的。