我希望你能帮助我解决这个问题:
我想通过unset删除xml节点。我有两种变体可以做到这一点,但只有一种是有效的。请告诉我差异或为什么只有第二个版本有效。
因此,当使用第一个变量时,print_r()函数会返回整个xml文件,其中包含应删除的图像“Hansio”。但是当使用第二个变体时,图像会被删除!
(您实际上可以将整个PHP代码复制到文件以及xml文件文本中 - 并立即进行测试 - 不需要进行任何更改 - 除了当然评论一个变体。)
PHP文件:
<?php
$galleries = new SimpleXMLElement('galleries.xml', NULL, TRUE);
/*Variant 1: NOT WORKING_____________________________________________________________*/
$image = $galleries->xpath("//galleries/gallery[@name='gallery']/image[@name='Hansio']");
unset($image[0]);
/*Variant 2: WORKING BUT NOT SO CONVENIENT___________________________________________*/
foreach($galleries->xpath("//galleries/gallery[@name='gallery']/image[@name='Hansio']") as $image)
{
unset($image[0]);
}
print_r($galleries);
?>
XML文件:
<?xml version="1.0" encoding="utf-8"?>
<galleries>
<gallery name="gallery">
<image name="image name 1"/>
<image name="image name 2"/>
<image name="Hansio"/>
<image name="image name 4"/>
</gallery>
</galleries>
答案 0 :(得分:0)
第一个变体不起作用,因为您未设置新创建的数组的元素,所以根本不触及SimpleXML元素。尝试
unset($image[0][0]);