xml在php中删除子节点

xml在php中删除子节点,php,xml,Php,Xml,我试图通过'id'属性删除“druzenje”元素。我知道要实现这一点,我必须删除该元素中的所有子节点 <?xml version="1.0" encoding="utf-8"?> <druzenja> <druzenje id="1"> <podaci attribute="some-data"/> </druzenje> <druzenje id="3"> <

我试图通过'id'属性删除“druzenje”元素。我知道要实现这一点,我必须删除该元素中的所有子节点

<?xml version="1.0" encoding="utf-8"?>
<druzenja>
    <druzenje id="1">
        <podaci attribute="some-data"/>
    </druzenje>
    <druzenje id="3">
        <podaci attribute="some-data"/>
    </druzenje>
</druzenja>
我认为通过“id”属性删除节点可能是一个糟糕的设计,但我基于此编写了很多代码,到目前为止,还没有出现任何问题。我还有一个代码,它删除了“podaci”元素,该元素以类似的方式工作,它这样做没有问题,但在这里它失败了。代码不会删除“podaci”和“druzenje”元素,即使removeChild()返回domeElement对象,这意味着它成功了,但它没有成功


有什么想法吗?

有人杀了我。我没有存钱。我为浪费某人的宝贵时间而道歉。

有人杀了我。我没有存钱。我为浪费某人的宝贵时间而道歉。

有人杀了我。我没有存钱。我为浪费某人的宝贵时间而道歉。

有人杀了我。我没有存钱。我为浪费某人的宝贵时间而道歉。

getElementsByTagName()返回从DOM中删除元素的“实时”结果。将其复制到数组以获得固定列表

$element = $this->dom->getElementById($id);
$element->parentNode->removeChild($element);
$druzenja = iterator_to_array(
  $this->dom->getElementsByTagName('druzenje')
);

foreach ($druzenja as $node) {
  if ($node->getAttribute('id') == $id) {
    $node->parentNode->removeChild($node);
  }
}
Xpath将允许您使用更复杂的条件。结果不是活的

$xpath = new DOMXpath($this->dom);
foreach ($xpath->evaluate('//druzenje[@id="'.$id.'"]') as $node) {
  $node->parentNode->removeChild($node);
}
getElementsByTagName()返回从DOM中删除元素的“实时”结果。将其复制到数组以获得固定列表

$druzenja = iterator_to_array(
  $this->dom->getElementsByTagName('druzenje')
);

foreach ($druzenja as $node) {
  if ($node->getAttribute('id') == $id) {
    $node->parentNode->removeChild($node);
  }
}
Xpath将允许您使用更复杂的条件。结果不是活的

$xpath = new DOMXpath($this->dom);
foreach ($xpath->evaluate('//druzenje[@id="'.$id.'"]') as $node) {
  $node->parentNode->removeChild($node);
}
getElementsByTagName()返回从DOM中删除元素的“实时”结果。将其复制到数组以获得固定列表

$druzenja = iterator_to_array(
  $this->dom->getElementsByTagName('druzenje')
);

foreach ($druzenja as $node) {
  if ($node->getAttribute('id') == $id) {
    $node->parentNode->removeChild($node);
  }
}
Xpath将允许您使用更复杂的条件。结果不是活的

$xpath = new DOMXpath($this->dom);
foreach ($xpath->evaluate('//druzenje[@id="'.$id.'"]') as $node) {
  $node->parentNode->removeChild($node);
}
getElementsByTagName()返回从DOM中删除元素的“实时”结果。将其复制到数组以获得固定列表

$druzenja = iterator_to_array(
  $this->dom->getElementsByTagName('druzenje')
);

foreach ($druzenja as $node) {
  if ($node->getAttribute('id') == $id) {
    $node->parentNode->removeChild($node);
  }
}
Xpath将允许您使用更复杂的条件。结果不是活的

$xpath = new DOMXpath($this->dom);
foreach ($xpath->evaluate('//druzenje[@id="'.$id.'"]') as $node) {
  $node->parentNode->removeChild($node);
}

“id”属性不是xsl:id属性,它只是一个名为“id”的属性,所以$element为NULL。“id”属性不是xsl:id属性,它只是一个名为“id”的属性,所以$element为NULL。“id”属性不是xsl:id属性,它只是一个名为“id”的属性,所以$element为NULL。“id”属性不是xsl:id属性,它只是一个名为“id”的属性,所以$element为NULL。