我希望你能帮我解决这个问题:
我想通过 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>