删除PHP中的XML节点导致不删除输入值

时间:2017-03-02 14:35:44

标签: php xml

我是新手我试图删除我输入的值的行,但它会一直删除第一行并忽略我输入的内容。提前感谢您的帮助,我们将非常感激。

Try.xml

<?xml version="1.0"?>
<Person>
<Student>
    <id>003</id>
    <name>k</name>
    <age>18</age>
</Student>

<Student>
    <id>004</id>
    <name>q</name>
    <age>19</age>
</Student>

<Student>
    <id>005</id>
    <name>a</name>
    <age>20</age>
</Student>

删除表单代码:      

<head>

<title>Delete Record</title>
</head>
<body>
    <form method="post" action="delete.php">
        ID to delete:<input name="id" type="text"/><br/>
        <input type="Submit" value= "Delete Record">
    </form>
  </body>
 </html>

和delete.php

    <?php

   $xmldoc = new DOMDocument();
    $xmldoc->load('try.xml');
    $root   = $xmldoc->documentElement;

    $items = $root->getElementsByTagName('Student')->item(0);
     $old=$root->removeChild($items);



     $test=$xmldoc->save('try.xml');
     if($test)
      echo "Successfully deleted";
     ?>

     <a href="index.php">Back</a>

2 个答案:

答案 0 :(得分:0)

您已在代码item(0) and removeChild($items)中指明触发它的内容始终是第一个值。

答案 1 :(得分:0)

您最常删除父元素中的子项。

$xmldoc = new DOMDocument();
$xmldoc->load('try.xml');
$root= $xmldoc->documentElement;
$data = $root->getElementsByTagName('Student');

$id = (string)@$_POST['id'];

if($data) {
    $domElemsToRemove = [];
    foreach ( $data as $domElement ) {

        if($domElement->childNodes->item(1)->textContent == $id) {
            $domElemsToRemove[] = $domElement;
        }
    }

    foreach( $domElemsToRemove as $domElement ){
        $domElement->parentNode->removeChild($domElement);
    }


    $xmldoc->save('try.xml');
}
ID:

更新

{{1}}