有没有办法创建自己的DOMNodeList?例如:
$doc = new DOMDocument();
$elem = $doc->createElement('div');
$nodeList = new DOMNodeList;
$nodeList->addItem($elem); // ?
Run Code Online (Sandbox Code Playgroud)
我的想法是扩展DOMDocument类,添加一些将数据作为DOMNodeList返回的有用方法.
是否可以在不编写自己版本的DOMNodeList类的情况下完成它?
您无法通过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 中返回它们。也许这就是您正在寻找的。
| 归档时间: |
|
| 查看次数: |
2692 次 |
| 最近记录: |