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

时间:2014-11-29 08:53:50

标签: php domdocument

有没有办法创建自己的DOMNodeList? E.g:

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

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

是否可以在不编写自己版本的DOMNodeList类的情况下执行此操作?

1 个答案:

答案 0 :(得分:3)

您无法通过DOMNodeListpublic interface添加项目。但是,DOMNodeLists在连接到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中。也许这就是你要找的东西。