天道酬勤,学无止境

如何在 PHP 中向 DOMNodeList 添加元素?(How to add elements to DOMNodeList in PHP?)

问题

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

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

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

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

回答1

您不能通过它的公共接口向 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

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

标签

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐