【发布时间】:2018-02-10 22:42:00
【问题描述】:
我是 PHP 新手,所以让我提前道歉。我一直在解析 XML,多亏了这里的文章,我几乎可以正常工作,但是从我的 XML 中删除元素时,我看到了一些奇怪的行为。
我从 Web 服务中提取了一个 XML,它运行良好,现在我需要删除一个元素的每个实例,XPath 已被证明是一个挑战(对我来说)所以现在我有了这个:
$idlist = $dom2->getElementsByTagName('ELEMENTID');
foreach ($idlist as $id) {
print "<!--"."Removing Node ".$id->nodeName."=".$id->nodeValue."-->";
//$id->parentNode->removeChild($id);
}
我打印为 XML 注释的原因是我正在生成一个 XML 输出文件。
现在,我的 XML 包含三个匹配的元素,即 123 - 当我有显示的代码时,它会打印出所有三个的 nodeName 和 nodeValue。但是,如果我取消注释 removeChild 行,事情会变得很奇怪,它会删除第一个和第三个匹配元素,但不会删除第二个。
希望我的解释有点清楚,removeChild() 是否有什么可能导致它以这种方式做出反应?
谢谢,克里斯。
【问题讨论】:
-
移除一个孩子后,它就不再是集合的一部分。请改用
while($id = $idlist[0])。