【发布时间】:2012-10-11 17:23:24
【问题描述】:
希望你能帮我解决这个问题:
我想通过 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>
【问题讨论】: