如何删除XML中的节点

时间:2012-12-19 06:41:25

标签: php javascript xml

为什么我的代码无法删除位于asset.xml中的元素

这是我在php文件中的xml代码:

<?php

if(isset($_POST["delete"])) {
        $node = $_GET["node"]; //get from form
        $xmldoc->load('asset.xml');
        $y= $xmldoc->getElementsByTagName("asset")[$node];
        $xmldoc.documentElement.removeChild($y);}
?>

我的xml文件

<?xml version="1.0" encoding="UTF-8"?>
<Assets>
  <asset>
    <AssetType>PROJECTOR</AssetType>
    <Product>DELL</Product>
    <Brand>DELL</Brand>
  </asset>
</Assets>

2 个答案:

答案 0 :(得分:1)

您必须保存文件才能保留更改

$xmldoc->save('asset.xml');

看作您发布的代码是实际代码

DOMDocument::getElementsByTagName返回DOMNodeList您必须通过DOMNodelist::item

访问这些元素
$y = $xmldoc->getElementsByTagName("asset")->item($node);//assuming $node is an integer < # of matched nodes

->用于访问php而不是.的对象属性,因此$xmldoc.documentElement.removeChild($y);应该是

$xmldoc->documentElement->removeChild($y);

或更好

$y->parentNode->removeChild($y);

答案 1 :(得分:1)

你需要先保存文件试试

$xmldoc->save('asset.xml');

removeChild()方法删除指定的节点 removeAttribute()方法删除指定的属性。