【发布时间】:2026-02-05 06:25:01
【问题描述】:
我们的目标是删除所有与 id 匹配的父级相同的 XML 子级。
我遇到的问题是只删除了第一个 XML 子项。当我运行这个文件时,输出是“The id is: 1”和“CarlCarlok”。该脚本删除了第一个具有“1”属性的 XML 子项。当我随后检查 XML 文件时,也证明了这一点,其中删除了 id 为“9”的评论。所以..要解决这个问题,我必须知道:
如何删除具有相同父级的每个 XML 子级? 因为现在它只删除它遇到的第一个。
<?php
require '../functions.php';
$id = $_GET['id'];
echo "The id is: " . $id . "\n";
$comment_xml_path = '../data/comments.xml';
$comments_xml_file = simplexml_load_file($comment_xml_path);
foreach ($comments_xml_file->comment as $c) {
echo $c->author;
if (strcmp($id, $c['parent']) == 0) {
$dom = dom_import_simplexml($c);
$dom->parentNode->removeChild($dom);
echo "ok";
}
save_xml($comment_xml_path, $comments_xml_file);
(save_xml() 是使用我们在课堂上制作的 asXML 进行保存的函数)
XML 文件
<?xml version="1.0" encoding="UTF-8"?>
<comments>
<comment id="6" parent="3" date="20150317224217">
<author>Carl</author>
<cmt>3</cmt>
</comment>
<comment id="9" parent="1" date="20150312225112">
<author>Carl</author>
<cmt>dsa</cmt>
</comment>
<comment id="10" parent="1" date="20150356225256">
<author>Carl</author>
<cmt>2</cmt>
</comment>
<comment id="11" parent="1" date="20150357225257">
<author>Carl</author>
<cmt>2</cmt>
</comment>
</comments>
【问题讨论】:
-
在删除第一个匹配项后保存 XML 文件后,您在此处放置的代码将结束。其余代码未显示。所以你可能保存得太早了?
标签: php xml parent-child elements