duanpie4763 2013-04-06 06:06
浏览 209
已采纳

如何删除XML元素和所有子元素?

I need to read an XML file and delete all the elements named <images> and all the children associated. I have found similar old questions that did not work. What am I doing wrong? Is there a better method?

XML:

<?xml version='1.0' encoding='UTF-8'?>
<settings>
  <background_color>#000000</background_color>
  <show_context_menu>yes</show_context_menu>
  <image>
    <thumb_path>210x245.png</thumb_path>
    <big_image_path>620x930.png</big_image_path>
  </image>
  <image>
    <thumb_path>200x295.png</thumb_path>
    <big_image_path>643x950.png</big_image_path>
  </image>
</settings>

PHP:

$dom = new DOMDocument();
$dom->load('test.xml');
$thedocument = $dom->documentElement;
$elements = $thedocument->getElementsByTagName('image');

foreach ($elements as $node) {
  $node->parentNode->removeChild($node);
}

$save = $dom->saveXML();
file_put_contents('test.xml', $save)
  • 写回答

3条回答 默认 最新

  • duanliyi5997 2013-04-06 23:38
    关注

    I figured it out after a good night of sleep. It was quite simple actually.

    $xml = simplexml_load_file('test.xml');
    unset($xml->image);
    $xml_file = $xml->asXML();
    $xmlFile = 'test.xml';
    $xmlHandle = fopen($xmlFile, 'w');
    fwrite($xmlHandle, $xml_file);
    fclose($xmlHandle);
    

    Edit: You probably want to make it save directly:

    $file = 'test.xml';
    
    $xml = simplexml_load_file($file);
    unset($xml->image);
    $success = $xml->asXML($file);
    

    See SimpleXMLElement::asXML()Docs.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘