有没有办法创建自己的DOMNodeList? E.g:
$doc = new DOMDocument();
$elem = $doc->createElement('div');
$nodeList = new DOMNodeList;
$nodeList->addItem($elem); // ?
我的想法是扩展DOMDocument类,添加一些将数据作为DOMNodeList返回的有用方法。
是否可以在不编写自己版本的DOMNodeList类的情况下执行此操作?
答案 0 :(得分:3)
您无法通过DOMNodeList向public 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中。也许这就是你要找的东西。