当前位置: 首页 > 知识库问答 >
问题:

如何使用DOMDocument删除元素?

胡桐
2023-03-14

是否可以从加载的DOM中删除元素而不创建新元素?例如,类似这样的事情:

$dom = new DOMDocument('1.0', 'utf-8');
$dom->loadHTML($html);

foreach($dom->getElementsByTagName('a') as $href)
    if($href->nodeValue == 'First')
        //delete

共有3个答案

万楷
2023-03-14

轻松:

$href->parentNode->removeChild($href);
越福
2023-03-14

这花了我一段时间才弄明白,所以这里有一些澄清:

如果要从循环中删除元素(如OP的示例),则需要向后循环

$elements = $completePage->getElementsByTagName('a');
for ($i = $elements->length; --$i >= 0; ) {
  $href = $elements->item($i);
  $href->parentNode->removeChild($href);
}

DOMNodeList文档:如果向后迭代,可以修改甚至删除DOMNodeList中的节点

夏侯玄天
2023-03-14

通过告诉父节点删除子节点来删除节点:

$href->parentNode->removeChild($href);

请参见DOMNode::$家长节点DocsDOMNode::Remvechild()Docs

也请参阅:

  • 如何删除属性使用PHP DOM文档?
  • 如何删除一个超文本标记语言元素使用DOM文档类
 类似资料:
  • 是否可以从加载的中删除元素而不创建新元素?例如,类似这样的事情:

  • 问题内容: 我的JsonArray是 现在,我要从此JsonArray中删除ID,ManualScheduled,已选中, 我尝试在JAVA中使用和。但是什么也没发生。我删除阵列项目错了吗? 我正在使用JAVA作为技术。 问题答案: 您所拥有的是一系列对象。因此,您将不得不遍历数组并从 每个 对象中删除必要的数据,例如 我假设您正在使用and ,但是无论使用什么JSON处理库,主体都保持不变。 如

  • 问题内容: 我是一个新手。有人可以告诉我如何使用原始Javascript(而不是jQuery)删除HTML元素。 当我单击“提交”按钮时,会在很短的时间内消失然后立即出现。单击按钮时,我想完全删除该元素。 问题答案: 发生的情况是正在提交表单,因此页面(带有其原始内容)正在刷新。您正在通过“提交”按钮处理事件。 如果要删除元素 而不 提交表单,请改为处理表单上的事件,然后从处理程序中返回: HTM

  • 问题内容: 我陷入了XML和Python的困境。任务很简单,但到目前为止我还无法解决,花了那么长时间。我是来这里咨询如何用几行解决它的。 感谢您对遍历树的任何帮助。我总是以太多或太少的元素结束。元素可以无限制地嵌套。给出的例子只是一个例子。我会接受任何解决方案,而不是对dom,minidom,sax等等不挑剔。 我有一个与此类似的XML文件: 我需要的是-解析XML并编写一个新文件。新文件应包含给

  • 问题内容: 想象一下,我有以下类似的东西修改 如何在不影响任何子元素的情况下从DOM中仅删除(仅文本)“第一”,“第二”和“第三”。 问题答案: 如果要删除所有子文本节点,则可以使用,然后将匹配集减少为仅文本节点: 注意 :这将保留子元素上所有现有的事件处理程序,使用答案不会做(因为从DOM中删除了这些元素并重新添加了这些元素)。 注2 :一些链接的问题中的答案显示的代码与我的答案中的代码相似,但

  • 问题内容: 我想使用此forEach循环从列表中删除一个元素。 问题答案: 您 不应该 修改要循环的数组。不过,您可以制作一个新的: 为什么不应该修改要循环的数组。