如何在PHP中向DOMNodeList添加元素?

opt*_*tor 5 php domdocument

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

$doc = new DOMDocument(); 
$elem = $doc->createElement('div');
$nodeList = new DOMNodeList; 
$nodeList->addItem($elem); // ?
Run Code Online (Sandbox Code Playgroud)

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

是否可以在不编写自己版本的DOMNodeList类的情况下完成它?

Gor*_*don 3

您无法通过DOMNodeList公共接口向其添加项目。但是,当连接到 DOM 树时,DOMNodeList 是实时集合,因此向 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
Run Code Online (Sandbox Code Playgroud)

您说您想添加“一些以 DOMNodeList 形式返回数据的有用方法”。在 DOMDocument 上下文中,这就是XPath所做的事情。它允许您查询文档中的所有节点并在 DOMNodeList 中返回它们。也许这就是您正在寻找的。