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

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

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

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

最佳答案

您无法通过DOMNodeList将项目添加到public interface。但是,当连接到DOM树时,DOMNodeLists是实时集合,因此将子元素添加到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中返回它们。也许这就是您想要的。

关于php - 如何在PHP中向DOMNodeList添加元素?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27200556/

10-11 20:40