【问题标题】:Remove all children from a XML Node PHP DOM从 XML 节点 PHP DOM 中删除所有子节点
【发布时间】:2010-08-30 19:53:02
【问题描述】:

我想使用 PHP DOM 从 XML 节点中删除所有子节点,有什么区别:

一)

while ($parentNode->hasChildNodes()){
   $parentNode->removeChild($parentNode->childNodes->item(0));
 }

B)

$node->nodeValue = "";

我更喜欢第二个,似乎我得到了相同的结果,但我不确定。

谢谢, 卡洛斯

【问题讨论】:

  • 我更喜欢第一个,因为在不复杂地了解 DOM 是如何工作的情况下,很容易看到发生了什么(因此,恕我直言,它更具可读性)...
  • 是的,你是对的,问题是我喜欢单行代码:)。无论如何,有什么不同吗?
  • 如果节点有多个孩子,在我的情况下,使用版本 B 会导致一些奇怪的字符。不过和一个孩子没有区别

标签: php dom


【解决方案1】:

稍微紧一点:

  while ($parentNode->hasChildNodes()) {
    $parentNode->removeChild($parentNode->firstChild);
  }

【讨论】:

  • 是的,但它实际上并没有回答看似提出的问题(可能已经被编辑过);)
【解决方案2】:

removeChild() 是更“正确”的做事方式。虽然您可以将该节点的内容设置为"",这将获得所需的效果,但调用removeChild() 对于正在发生的事情更加明显。但是,我的假设是,在极小的水平上,nodeValue() 的效率略高。

【讨论】: