【发布时间】:2014-02-25 20:38:10
【问题描述】:
我正在尝试通过“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>
要删除的代码是这样的......
$druzenja = $this->dom->getElementsByTagName('druzenje');
foreach($druzenja as $node) {
if($node->getAttribute('id') == $id) {
$podaciNodeList = $node->getElementsByTagName('podaci');
foreach($podaciNodeList AS $podaciNode) {
$node->removeChild($podaciNode);
}
$this->dom->documentElement->removeChild($node);
return true;
}
}
我认为通过 'id' 属性删除节点可能是糟糕的设计,但我在此基础上编写了很多代码,到目前为止,还没有任何问题。我还有一个代码可以删除以类似方式工作的“podaci”元素,它没有问题,但在这里它失败了。代码不会删除“podaci”和“druzenje”元素,即使 removeChild() 返回 DomElement 对象,这意味着它成功但不是。
有什么想法吗?
【问题讨论】: